在c#中,我們可以非常自由的、毫無限制的訪問公有字段,但在一些場合中,可能存在以下幾種情況
(1).希望限制只能給字段賦於某個範圍的值
(2).要求字段只能讀或只能寫
(3).在改變欄位時能改變物件的其他一些狀態
這些單靠欄位是無法做到的,於是就有了屬性,屬性中包含兩個塊:set和get,set塊負責屬性的寫入工作,get塊負責屬性的讀取工作。在兩個塊中都可以做一些其他操作,如在set中驗證賦的值是否符合要求並決定是否進行賦值。當缺少其中一塊時屬性就只能讀或只能寫,set和get塊中屬性必需有乙個,因為即不能讀又不能寫的屬性是沒有意義的。
程式**
//私有字段
private int _a;
private bool _b;
private int _c;
private int _d;
//屬性:
//可讀寫
public int a
get
}//唯讀
public bool b
}//可檢測賦值是否正確
public int c
}//賦值時更改其他狀態
public int d
get
}
從例子中可看到屬性其實就是對私有欄位的讀取和寫入,以便做些公有字段無法完成的任務,他的使用方式和公有字段完全一樣,所以可以理解成屬性是為了滿足對公有欄位的特殊需求而產生的附屬品。因而當我們選擇使用屬性還是使用欄位時,主要看需求,如果不需設定訪問許可權、不需在賦值時檢測值是否滿足要求、不需要在賦值時修改物件其他一些狀態等特殊的需求時,使用公有字段即可,否則就使用屬性。
屬性和字段的區別
(1).欄位是隸屬於類的變數,而屬性是乙個函式成員,屬性不為資料儲存分配記憶體!它執行**
//字段
class myclass
//屬性
class myclass
set
}}
(2)屬性可以保證安全,當不在本類中使用時可以保證使用屬性名可以避免使用欄位的名字。
(3)屬性的set和get函式可以限制欄位的一些功能,以達到某種目的。 如:
private int a=0;
public int a
set}
(4)屬性沒有儲存資料的功能,資料都存在欄位中,所以只有修改欄位的資料才能更改資料,修改屬性的值沒用。
屬性是類提供給外部呼叫時用的可以使用物件.屬性設定或讀取乙個值
get//表示可讀
set//表示可寫
字段就是類內部用的.儲存資料
private 字段;
public 屬性;
通過屬性訪問字段
講概念可能不好講,下面來看乙個例子吧!(最簡單的)
class program
set}
}//因為欄位的訪問修飾符為private外部不能訪問它,但可以定義屬性為public來訪問
C 篇(一) 欄位與屬性
欄位和屬性有什麼區別?class student set 你有沒有想過 為什麼要有屬性?為什麼不直接將字段設定為公有?簡單的總結 屬性更像是方法,用屬性來代替直接訪問字段可以有更好的邏輯控制。比如 class student setelse 當然也可以通過屬性來限制只能設定或獲取某乙個欄位的值。乙個...
在ArcGIS屬性表中根據某一字段進行分組編號
在使用arcgis處理資料過程中,常會遇到對屬性表計算的問題,如自動編號 分組編號等等。近日,在乙個專案的資料處理過程中,便遇到了乙個分組編號的問題。如下圖,name欄位多個相同值,需要根據這一字段進行分組編號 在arcgis欄位計算器幫助文件中,有一段示例 是關於自動編號的,給定乙個起始值和步長值...
欄位與屬性的區別
字段 是直接在類或結構中宣告的任何型別的變數。欄位是其包含型別的 成員 屬性是這樣的成員 它提供靈活的機制來讀取 編寫或計算某個私有欄位的值。可以像使用公共資料成員一樣使用屬性,但實際上它們是稱作 訪問器 的特殊方法。這使得可以輕鬆訪問資料,此外還有助於提高方法的安全性和靈活性。class time...