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

C#:字段與屬性,

編輯:C#入門知識

C#:字段與屬性,


MSDN中是這麼介紹字段和屬性的:

A field is a variable of any type that is declared directly in a class or struct.

字段:“字段”是直接在類或結構中聲明的任何類型的變量。

A property is a member that provides a flexible mechanism to read, write, or compute the value of a private field.Properties can be used as if they are public data members, but they are actually special methods called accessors.This enables data to be accessed easily and still helps promote the safety and flexibility of methods.

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

字段是變量,而屬性是方法。字段一般是private的,而屬性一般是public的。外部代碼可以通過屬性來訪問字段,實現對字段的讀寫操作,所以屬性又稱訪問器。

屬性可以控制外部代碼對字段的訪問權限:通過只實現get訪問器,使字段是只讀的;通過只實現set訪問器使字段是只寫的;同時實現get和set訪問器,則外部可對該字段進行讀寫操作。

①屬性同時包含 get 和 set 訪問器,允許任何對象讀寫該屬性。相應的任何對象也可以對該屬性所對應的字段進行讀寫操作。

 1     public class Person
 2     {
 3         //-----------------------
 4         //可讀可寫
 5         //-----------------------
 6         private string name;
 7         /// <summary>姓名</summary>
 8         public string Name
 9         {
10             get;set;
11         }
12     } 

 ②屬性只包含get訪問器,省略set訪問器,則該屬性為只讀的。相應的外部代碼只能對該屬性所對應的字段進行讀操作。

 1     public class Person
 2     {
 3         //-----------------------
 4         //只讀
 5         //-----------------------
 6         private string name;
 7         /// <summary>姓名</summary>
 8         public string Name
 9         {
10             get;
11         }
12     }

 ③屬性只包含set訪問器,省略get訪問器,則該屬性為只寫的。相應的外部代碼只能對該屬性所對應的字段進行寫操作。

 1     public class Person
 2     {
 3         //-----------------------
 4         //只寫
 5         //-----------------------
 6         private string name;
 7         /// <summary>姓名</summary>
 8         public string Name
 9         {
10             set;
11         }
12     }

 屬性可以對字段的寫操作進行有效性驗證。

 1         //-----------------------
 2         //有效性驗證
 3         //-----------------------
 4         private int age;
 5         /// <summary>年齡</summary>
 6         public int Age
 7         {
 8             get;
 9             set {
10                 if (value <= 0 || value >= 150)
11                 {
12                     throw new ArgumentOutOfRangeException("Age", "The range of age is between 1 and 150.");
13                 }
14             }
15         }

C語言中 ^怎使用

a1 = 0x01; //0000 0001
a2 = 0x00; //0000 0000
a3 = 0x03; //0000 0011
a4 = 0x02; //0000 0010

b1 = a1 ^ a2; //0000 0001
b2 = a1 ^ a3; //0000 0010
b3 = a1 ^ a4; //0000 0011

^異或運算符,位值相同為0,不同為1,見上示例.

//
簡單實際問題舉例:
======\=======\=======
======a=======b=======
上面是2條電路,2個開關分別為a和b,打開狀態:\[1],關閉狀態:/[0].
若同時打開或者關閉,兩條電路均不通.
若a打開[1],b關閉[0],電路1通電
======\=======/=======
若a關閉[0],b打開[1],電路2通電
======/=======\=======
綜上,電路在a,b狀態相同時不通[0],在a,b不同時通電[1].
 

C語言中 ^怎使用

a1 = 0x01; //0000 0001
a2 = 0x00; //0000 0000
a3 = 0x03; //0000 0011
a4 = 0x02; //0000 0010

b1 = a1 ^ a2; //0000 0001
b2 = a1 ^ a3; //0000 0010
b3 = a1 ^ a4; //0000 0011

^異或運算符,位值相同為0,不同為1,見上示例.

//
簡單實際問題舉例:
======\=======\=======
======a=======b=======
上面是2條電路,2個開關分別為a和b,打開狀態:\[1],關閉狀態:/[0].
若同時打開或者關閉,兩條電路均不通.
若a打開[1],b關閉[0],電路1通電
======\=======/=======
若a關閉[0],b打開[1],電路2通電
======/=======\=======
綜上,電路在a,b狀態相同時不通[0],在a,b不同時通電[1].
 

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