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

C#入門--字段與屬性,

編輯:C#入門知識

C#入門--字段與屬性,


C#入門--字段與屬性

  “字段”,它是包含在類或結構中的對象或值。字段使類和結構可以封裝數據。

  屬性是這樣的成員:它們提供靈活的機制來讀取、編寫或計算私有字段的值。可以像使用公共數據成員一樣使用屬性,但實際上它們是稱為“訪問器”的特殊方法。這使得數據在可被輕松訪問的同時,仍能提供方法的安全性和靈活性。

 

public class Program
{
    private int _number;    //_number為字段

    public int Number        //Number 為屬性
    {
        get { return _number ;}
        set { _number = value ;}
    }

}

 

  從上面的例子可以明顯看出,字段就是變量,而屬性就是字段的訪問方式(通常字段是private,屬性是public),這類似於C++,申明一個private 類型的變量x,通過 GetX()與SetX()函數來對x進行操作。而這裡的屬性就是將這兩個函數合在一起通過set與get關鍵字對相應的字段進行處理。

  屬性的出現,極大的簡化了我們的編碼工作。與C++和Java比較一下,你會發現我們不必為了一個字段而專門寫兩個函數(雖然這些函數很簡單),而且使得代碼編的更簡潔,更易讀,更易改。

  當然,屬性也可對字段進行一些處理(例如返回字段時判斷其是否為空,對字段進行賦值時判斷value是否有效等簡單或者其它更復雜的操作)。也可以設置屬性的訪問權限(如只讀,只寫,可讀可寫,不可讀不可寫)。而且現在的C#版本已經支持自動屬性,即不必為屬性指定字段,如 public int Number {get;set;} 這樣就可以申明一個屬性,編譯器會為其自動分配一個字段(編譯時),總之通過屬性,可以極大的簡化我們的操作,使得代碼的可讀性更高,可維護性更高。下面讓我們通過一些例子來深入理解屬性的作用。

    public class Program
    {
        private static string _number;

        public static string Number //非自動屬性,可讀可寫
        {
            get
            {
                if (_number == null)
                     return Convert.ToString(new NullReferenceException());
                return _number; 
                
            }
            set
            {
                string temp = "";
                foreach (var ch in value)
                {
                    if (char.IsDigit(ch))
                        temp += ch;
                }
                _number = temp;
            }
        }

        public static string ReadWrite { get; set; }    //自動屬性,可讀可寫

        public static string ReadOnly { get { return "0000"; }} //自動屬性,只讀

        private static string _writeOnly;

        public static string WriteOnly { set { _writeOnly = value; } }  //非自動屬性,只寫

        public static void Main(string[] args)
        {
            Number = "23kljk3j423903kj43kj432kj";
            ReadWrite = "ReadWrite";
            //ReadOnly = "ReadOnly";    //報錯,此屬性只讀
            WriteOnly = "WriteOnly";

            Console.WriteLine(Number);
            Console.WriteLine(ReadWrite);
            Console.WriteLine(ReadOnly);
            //Console.WriteLine(WriteOnly); //報錯,此屬性只寫
            Console.ReadKey();
        }
    }


//Results:
//23342390343432
//ReadWrite
//0000

 

 

 

 

 

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