首頁 >後端開發 >C#.Net教程 >C#學習日記27----屬性

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

黄舟
黄舟原創
2017-01-21 15:36:561536瀏覽

屬性可以是類別(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存取器(表示唯讀),或一個set存取器(表示唯寫),存取器的宣告則可包含一個get存取器(表示唯讀),或一個set存取器(表示唯寫)或兩個同時包含(表示可讀可寫)。 (上面的範例我們使用get存取器輸出name,使用set存取器寫入)

 

定義屬性:

             上面的範例中我們可以定義使用物件存取屬性的屬性,能夠為外部使用物件存取的屬性, 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}\t今年 {1} 岁了",per.Name,per.Age); //读属性  
        }  
    }  
}

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

以上就是 C#學習日記27----屬性的內容,更多相關內容請關注PHP中文網(www.php.cn)! C#學習日記27----屬性

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn