程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#學習日記27----屬性

C#學習日記27----屬性

編輯:C#入門知識

C#學習日記27----屬性


屬性可以是 類(class)、結構(struct)、接口(interface)的命名成員,他提供靈活的機制來讀取、寫入、或計算私有(private)字段的值,屬性可以看作是公共(public)字段的成員,但他實際上是定義了一個“訪問器”的特殊方法讓私有字段的值可以被讀寫或操作。

說的形象點吧,比如我們定義一個person類裡面有一個私有成員 private string name; 在外界我們實例化一個person對象per,要求為per起個名字,並且輸出這個名字,也就是為per.name賦一個值,然後輸出??經過前面的學習我們知道,類中的private修飾的變量外界對象是訪問不到的,(無法直接per.name=HC666來搞定^_^) 因此只能在類裡面定義一個public修飾的setname與getname方法將“HC666”作為參數來進行寫入與輸出,這樣有點繁瑣,這個時候“屬性”就該登場了,我們為name定義一個讀寫屬性Name就可以彌補這個不足。

“訪問器”

屬性的訪問器包含有獲取或者設置屬性的可執行語句,訪問器的聲明可包含一個get訪問器(表示只讀),或者一個set訪問器(表示只寫),或者兩個同時包含(表示可讀可寫)。(上面的例子中我們使用get訪問器輸出name,使用set訪問器寫入)

 

定義屬性:

上面的例子中我們可以為name 定義一個讀寫屬性Name,使用外界對象能夠訪問的public修飾符

private string name; //聲明name變量

public string Name //聲明變量的屬性,讀寫

{

get { return name; } //定義讀訪問器,其實就是一個方法

set { name = value; } //定義寫訪問器,set 方法有一個隱含的參數value

}

再定義一個只讀屬性吧,比如我們的年齡 age 是固定的只讀

private uint age=10; //聲明變量 age

private string Age //聲明變量的屬性,只讀

{

get { return age; } //讀訪問器

}

 

屬性的實例:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Test1
{
    class person
    {  //定義變量name,並且為name定義一個讀寫屬性
        private string name;
        //定義屬性
        public string Name
        {//訪問器
            get { return name; }
            set { name = value; } //set自帶一個value參數
        }
        //定義變量age,並且為age定義一個只讀屬性
        private uint age=10;
        public uint Age
        {
            get { return age; }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            person per = new person();
            per.Name = HC666;  //執行寫入屬性
            Console.WriteLine(我的名字叫:{0}	今年 {1} 歲了,per.Name,per.Age); //讀屬性
        }
    }
}


結果:

\

 

抽象屬性:

前面也說了,屬性可以使類、結構、接口的成員,自然也可以是抽象類的抽象屬性了,抽象屬性同抽象方法一樣在派生類中被實現。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Test1
{//定義一個person抽象類
    abstract class person
    {//定義抽象屬性
        public abstract string Name
        {//讀寫
            get;
            set;
        }
        public abstract uint Age
        {//只讀
            get;
        }

    }
    //定義派生類
    class student : person
    {
        private string name;
        private uint age=10;
        //實現抽象屬性
        public override string Name
        {
            get
            {
                return name ;
            }
            set
            {
                name=value;
            }
        }
        public override uint Age
        {
            get { return age; }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            student stu = new student();
            stu.Name = HC666;  //執行寫入屬性
            Console.WriteLine(我的名字叫:{0}	今年 {1} 歲了,stu.Name,stu.Age); //讀屬性
        }
    }
}


結果與上一個例子是一樣的。

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved