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

來源:互聯網
上載者:User
屬性可以是 類(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}\t今年 {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}\t今年 {1} 歲了",stu.Name,stu.Age); //讀屬性          }      }  }

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

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

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.