程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#基礎知識 >> C#基本語法學習(三)

C#基本語法學習(三)

編輯:C#基礎知識

1、C#屬性,用如下代碼定義一個屬性:

         private string name;
         public string Name
         {
             get { return name; }
             set { name = value; }
         }

  第1行定義了一個變量,這是屬性所依賴的基礎變量。2-6行代碼定義了一個Name屬性,類的使用者可以通過Name屬性對類中的基礎變量進行讀取和修改。如:

 Student student = new Student();
 
 student.Name = "Nick";

  在屬性的使用者看來,屬性就像類裡面有一個具有public訪問權限的變量,但事實情況並非如此。前面代碼中定義的Name屬性其實定義了兩個特殊方法,GetName和SetName方法,分別用來讀取和修改類中的私有變量Name。

  第4行代碼稱為屬性的讀取讀取方法(getter)。屬性的讀取方法必須返回與屬性相同的類型。當有代碼讀取屬性時,讀方法就被調用,並且將返回值交給調用屬性的代碼。

  第6行代碼是屬性的設置方法(setter),設置方法接受一個與屬性類型相同的入口參數,並且在C#中規定這個入口參數名稱為value,所以在屬性的設置方法中可以不用聲明直接使用value變量。當對屬性進行賦值時setter方法被調用。

  C#中的屬性一般具有一個get方法和一個set方法,get方法用於讀取屬性值,set方法用於設置屬性值,但並非都是必須的,屬性可以只有get方法或set方法,只有get方法的屬性只可以讀取,只有set方法的屬性只能寫入,不能讀取。

  使用屬性的好處:隱藏數據成員,提高程序的健壯性和靈活性。

  利用屬性校驗數據,通過使用屬性,可以對數據進行驗證,避免接受不合法的數據,提高程序健壯性。如下面例子,通過屬性限制age的值。

     class Student
     {
         private string name;
         public string Name
         {
             get { return name; }
             set { name = value; }
         }
 
         private int age;
         public int Age
         {
             get { return age; }
             set 
             {
                 if (value < 0 || value > 120)
                 {
                     Console.WriteLine("Invaild age!!");
 
                     return;
                 }
                 else
                 {
                     age = value;
 
                     Console.WriteLine("Age set to: {0}", age);
                 }
             }
         }
     }
 
         static void Main(string[] args)
         {
             Student student = new Student();
 
             Console.WriteLine("Set student name : Nick");
             student.Name = "Nick";
             Console.WriteLine("Set student age: 25");
             student.Age = 25;
             Console.WriteLine("Student " + student.Name + "'s age is {0}!", student.Age);
 
             Console.WriteLine("Set student age: 140");
             student.Age = 140;
 
             Console.WriteLine("Student " + student.Name + "'s age is {0}!", student.Age);
 
             Console.WriteLine("Press enter to exit!");
             Console.ReadLine();
         }

  運行結果如下:

  

 Set student name : Nick
 Set student age: 25
 Age set to: 25
 Student Nick's age is 25!
 Set student age: 140
 Invaild age!!
 Student Nick's age is 25!
 Press enter to exit!

 

  屬性其實是一種特殊的方法,而不是一個變量。有時候屬性的確是對類中成員變量的封裝,但很多時候也不是這樣。

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