博客園一查,還真的漲見識了
剛寫程序時總覺得一個字段就能滿足要求,何必要使用定義起來麻煩的屬性
要get、set的去定義,代碼量還大,真不知道他們的區別和優點
例:
public class myclass
{
public static string A
private sting _B="";
public string Getval
{
get { retrun _B ;}
set { _B = value; }
}
}
myclass.A 和 myclass.Getval可能實現同樣功能,為什么一定要用定義屬性?
現在簡單總結下屬性較普通變量的優點:
1、數據安全
因為A是個公有變量,在類的外部可以任意更改,為了防止因用戶任意更改,可用屬性get、set來限制_B的的只讀、只寫或控制_B的最大或最小
引用一位老兄的簡答:"其實自定義變量已經默認實現了屬性,只是簡單的讀寫而已,我們定義的屬性要在讀寫的基礎上加上更多限制,以后你學的多了就會發現, 很多東西都是為了數據安全而加入的,說白了就是限制,例如接口,接口中的方法你必須(注意是必須,強制性的)要實現"
2、OOP和編程的一個原則就是數據封裝,意味着我們不應該將字段的類型以公開的方式提供給外界
3、其實單純寫程序一點不難,難得是如何設計程序,使代碼簡潔易讀而效率又最高,如何保證程序的安全運行
一直沒用在form窗體 中用到這些 屬性 虛方法 抽象類 接口之類的.. 怎么在程序中使用呢...
過兩周課設了,想辦法把學的這些都添加進去.. 把C#高級編程里面對窗體的應用也添加進去.. 會收獲很多吧 呵呵
一個類,有時候搞不清楚到底用成員變量還是屬性。
如:
成員變量
public string Name;
或者用屬性
private string name
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
屬性與成員變量類似,它們都提供數據存儲,但屬性的功能遠比成員變量強大。屬性由特殊方法(Get 和 Set 訪問器)訪問。Get 和 Set 訪問器允許在設置或檢索屬性之后驗證屬性值、執行其他代碼或執行其他任務
例如
成員變量這樣寫
public readonly string Name;
那還是可以是只讀了
private string name
public string Name
{
get
{
return name;
}
}
面向對象的編程方法是要抽象、封裝;在類中,定義的變量是正對類本身而言,我們把它們叫做域。它可以為public ,private等;屬性是針對外部看到的類的特性,是類展示給外部使用者的特性。前面我們講到了域可以為public,但這樣把域申明為public將 不利於類的封裝,因為外部使用者可以對類進行直接修改。所以我們就可以用到屬性,我們只是公開它們的屬性,至於如何對其進行賦值(set)如何進行取值 (get)都已經進行了封裝,對於類外部是不可見的。對於外部使用者來說只能夠使用它,不能控制它,如何控制操作是由類自身決定的。你理解了嗎?
C# 變量 、字段、屬性、方法的區別
string name1;//變量,可以出現在任何需要他的地方
public class MyClass //類
{
public string name2;//字段,成員變量。是變量,只不過在MyClass這個類中,就改叫字段,也可以叫成員變量
private string name3;//私有字段,也是變量,加了private 修飾符的
private string name="";//配合屬性來使用
public string Name//屬性
{
get {return name;}//get訪問器
set {name=value;}//set訪問器
}
public string Name_fangfa() //方法
{
return name;
}
}
一句話:字段、屬性都是變量,只是為了區分和數據安全設置的。
字段的使用場景:與類或者對象關系密切,建議使用private修飾。
屬性的使用場景:對字段進行封裝,提供get/set關鍵字,進行訪問。
變量的使用場景:與類或者對象關系不密切,常常在方法或者語句塊中使用。
字段和屬性是相對於類而言的,而變量相對於方法或者語句塊而言,可以再任何地方使用。