屬性和字段的區別:
- 屬性是邏輯字段,是字段的擴展,並不占用實際的內存;而字段占用內存空間。
- 屬性可以被其他類訪問;而非public的字段不能被直接訪問。
- 屬性可以對接受的數據在范圍上做限定;而字段不能。
- 屬性原則上是方法內容保存在代碼區,
常規屬性和自動屬性:
常規屬性,一般我們手動定義 私有字段並定義屬性訪問該字段,這就是常規屬性,
private int _age;
public int Age
{
get
{
//可添加邏輯最后已return返回
return _age > 10 ? _age : 0;
}
set
{
if (!_age.Equals(value))
{
//TODO 添加邏輯 最后給私有字段賦值
_age = value;
}
}
}
自動屬性,一般我們做數據庫到C#集合的映射時只定義一個屬性,
Public int Age { get;set;}
1.自動實現的屬性必須同時聲明 get 和 set 訪問器。創建 readonly 自動實現屬性時,需要將set 訪問器設置為private 。
2自動實現的屬性上可以使用特性,不能用在支持后備字段上。 如果屬性的后備字段上使用特性,則應該只創建常規屬性。
3.自動實現屬性get,和set中不能包含特殊的邏輯處理。與字段類似,但不同於字段。與字段不同,屬性不作為變量來分類,不能將屬性作為 ref參數或 out參數傳遞。
備注:若有遇到接口中定義屬性(屬性屬於方法故接口可以定義),但是在做數據庫數據映射並保存的時候,是不能用接口做映射的,因接口不能定義字段,而屬性不保存內容,只有字段才保存內容,當一個類繼承接口則這個類就有了接口的屬性,並自動定義字段(自動屬性),就可以保存內容了
