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

C#基本語法學習(三),

編輯:C#入門知識

C#基本語法學習(三),


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

1         private string name;
2         public string Name
3         {
4             get { return name; }
5             set { name = value; }
6         }

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

1 Student student = new Student();
2 
3 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的值。

 1     class Student
 2     {
 3         private string name;
 4         public string Name
 5         {
 6             get { return name; }
 7             set { name = value; }
 8         }
 9 
10         private int age;
11         public int Age
12         {
13             get { return age; }
14             set 
15             {
16                 if (value < 0 || value > 120)
17                 {
18                     Console.WriteLine("Invaild age!!");
19 
20                     return;
21                 }
22                 else
23                 {
24                     age = value;
25 
26                     Console.WriteLine("Age set to: {0}", age);
27                 }
28             }
29         }
30     }
31 
32         static void Main(string[] args)
33         {
34             Student student = new Student();
35 
36             Console.WriteLine("Set student name : Nick");
37             student.Name = "Nick";
38             Console.WriteLine("Set student age: 25");
39             student.Age = 25;
40             Console.WriteLine("Student " + student.Name + "'s age is {0}!", student.Age);
41 
42             Console.WriteLine("Set student age: 140");
43             student.Age = 140;
44 
45             Console.WriteLine("Student " + student.Name + "'s age is {0}!", student.Age);
46 
47             Console.WriteLine("Press enter to exit!");
48             Console.ReadLine();
49         }

  運行結果如下:

  

1 Set student name : Nick
2 Set student age: 25
3 Age set to: 25
4 Student Nick's age is 25!
5 Set student age: 140
6 Invaild age!!
7 Student Nick's age is 25!
8 Press enter to exit!

 

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

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