引言:
C#與java,C++中的這些基本概念略有不同。由於easy混淆,所以這里總結下差別。
希望能對剛開始學習的人有幫助!
一.定義與作用
1.字段(field):是C#類級別定義的,和方法同一級別。
- 一般用來類內部進行訪問。充當一種類中的"全局變量"角色;
- 或者配合屬性來使用
2.屬性:相同是C#類級別定義的。通常是供外部類訪問的。
3.成員變量:"全局變量",在類中定義的變量,差別於在方法中定義的局部變量。它與字段屬性不是同一級別概念,字段,屬性都能夠叫做成員變量。
二.使用
class Basic
{
private string FieldVar;//這是字段。在當前類中調用
private string fieldVarForProperty;//這是字段。配合屬性用
public string FieldVarForProperty//這是屬性
{
get{return fieldVarForProperty;}//屬性中使用了字段
set{ fieldVarForProperty=value;}
}
}
這里可以看出:字段就是變量。而屬性則類似於方法。屬性可以使得外部類訪問當前類的字段。這里存在一些問題:
1.有人說,那我們能夠將字段定義為public,那外部不就能夠訪問了。
確實能夠訪問。可是違背了類的設計原則。面向對象要求對數據進行封裝。假設這里我們將字段定義為public,來使外部訪問。那么外部就會任意的破壞我們的字段。所以不這么做
2.有人說,屬性為什么要配合字段使用呢
直接定義成以下這樣不就能夠了
public string FieldProperty
{
get {return FieldProperty;}
set{FieldProperty=value;}
}
編譯確實沒有問題。可以通過。可是思考一下,當我們調用get/set方法時,在方法體內又使用了FieldProperty屬性,是個死循環,程序會down掉的
注:C#是有自己主動實現的屬性的,就是說
public string FieldProperty
{
get;set;
}
C#會自己主動為你聲明一個私有字段的
三.字段與屬性差別
1. 字段總是可讀可寫(readonlykeyword除外)屬性可讀可寫(至少要有一樣)
2.字段總是馬上運行。效率高。屬性還須要調用方法,效率低
3.字段能作為ref,out參數。屬性不能夠
