1. 程式人生 > 其它 >C#中屬性的定義及用法

C#中屬性的定義及用法

屬性是可以提供被靈活的讀取與呼叫,屬性的存在形式有兩種:一種是在基類庫中定義的,還有一種是自定義的。定義一個屬性需要名字和型別,例如下文中的string就是型別,MYPRO就是名稱,屬性包含兩部分內容,一個是get,一個是set,當我們想要取得屬性的值的時候,我們就可以呼叫get塊,其返回值型別就是屬性上面定義的型別,當我們想要在屬性中設定值時,就需要呼叫set塊中的value來進行訪問設定。
例如自定義一個屬性,他的一般格式如下:

 private string a;   
        public string MYPRO
        {
get { return a; } set { a = value; } }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

我們需要明白,有了get和set我們就可以對該資料進行讀取和修改,程式設計規範中,我們一般把類中的資料變數定義為private,減少程式出錯的概率,這時其他類就不能定義了,這時我們可以用屬性來進行訪問:

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

namespace STRUC
{
class Program
{
static void Main(string[] args)
{
GouZAO GOU = new GouZAO();
GOU.NAME = 200;

        <span class="token keyword">int</span> tem <span class="token operator">=</span> GOU<span class="token punctuation">.</span>NAME<span class="token punctuation">;</span>
        Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span><span class="token string">"讀取的值是:"</span><span class="token operator">+</span>tem<span class="token punctuation">)</span><span class="token punctuation">;</span>
        Console<span class="token punctuation">.</span><span class="token function">Read</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

    <span class="token punctuation">}</span>
<span class="token punctuation">}</span>
class GouZAO
<span class="token punctuation">{<!-- --></span>
   
    private <span class="token keyword">int</span> d<span class="token punctuation">;</span>
    public <span class="token keyword">int</span> NAME
    <span class="token punctuation">{<!-- --></span>
     
      get
        <span class="token punctuation">{<!-- --></span> Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span><span class="token string">"取值方法被讀取"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
            <span class="token keyword">return</span> <span class="token number">100</span><span class="token punctuation">;</span>
        <span class="token punctuation">}</span>  
        set
        <span class="token punctuation">{<!-- --></span> 
            d <span class="token operator">=</span> value<span class="token punctuation">;</span>
            Console<span class="token punctuation">.</span><span class="token function">WriteLine</span><span class="token punctuation">(</span><span class="token string">"開始賦值:"</span> <span class="token operator">+</span> d<span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token punctuation">}</span>  

    <span class="token punctuation">}</span>

<span class="token punctuation">}</span>

}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

結果是:

這裡可以看到用到了幾個修飾詞:private和public,這裡就簡單談一下幾種常見的修飾符的意思以及他們的可用範圍;
private:隱私,也就是自己的,作為該類所私有的,只能在宣告類中使用;
public:公共的就是公開的,不限制訪問許可權,其他類都可以呼叫;
protected:保護的,只能在其所在類和其子類(繼承等關係)才能呼叫;
internal:內部的,只有其所在類才能訪問,外部類無法訪問;
這段程式就是定義了一個屬性,他的資料型別是string,也就是字元型別。用get和set來確定定義的屬性,還有一種通俗的寫法是:public string NAME { get; set; },這個也是定義,也是string型別。例如程式:

namespace shuxing
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("請輸入你的姓名:");
            //string name;
            string name = Console.ReadLine();
            Console.WriteLine("你的屬性是:");
            Shuxing shu = new Shuxing();
            shu.c = "10000";
            Console.WriteLine("你的攻擊力是:"+shu.c);
            shu.c = "10000";
            Console.WriteLine("你的血量是:"+shu.c);
            Zhaoshi zhao = new Zhaoshi();
            zhao.NAME = "降龍十八掌";
            Console.WriteLine("你的絕招有:"+zhao.NAME);
            zhao.NAME = "鐵布衫";
            Console.WriteLine("皮厚的原因是你有:"+zhao.NAME);
            Console.ReadLine();
        }
    }
    class Shuxing
    {   private string a;   
        public string c
        {
            get
            { return a; }
            set
            { a = value; }
        }
    }
    class Zhaoshi
    {
       public string NAME { get; set; }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38

如程式中就是寫了這兩種屬性的定義,下面定義了一個招式的類,這個返回的值就是字元型的資料,當在main函式中呼叫的時候,在初始化之後,可以看到shu.c = "10000";以及zhao.NAME = "降龍十八掌";這些就可以直接定義所需要顯示的屬性,可以很清楚的瞭解該類的屬性。
這是顯示結果:

</article>