c#語言的字段和屬性的區別……

忽然間想起c#中字段和屬性有什麼區別,百度一下,有人說字段和屬性差不多,結果參考了一下蘇坤老師講的c#,才明白,原來在c#中字段和屬性真的不是一個概念!

1)很多人會說,類中不就是包括屬性還有方法嗎,這個字段是個什麼東西?別急,上程序一看……



大家說Person這個類中的姓名和年齡是叫字段呢還是叫屬性呢,可能很多人就覺得應該叫屬性。其實是錯了。c#中規定,name和age叫字段,而不叫屬性。爲什麼這樣呢?試看上面的程序,p.age = -10;我們將一個人的年齡賦個負數,OK,編譯會出錯嗎?不會!爲什麼?因爲Person類的age完全暴露給我們,我們在main()方法中想賦什麼樣的值都行……極爲不合理,也不安全!所以c#規定name和age是字段。

2)何爲屬性?

c#中屬性的引起,其實就是爲了保護“不安全”的字段的,比如上面Person類的字段age,如果將age的訪問修飾級別改爲private,從main()方法中就無法對age進行訪問,這樣就保證了age不能被隨意的修改。此時引入屬性Age,訪問修飾級別爲public,包含兩個方法---get和set方法。通過get和set方法,對private類型的age進行訪問,並在set方法中可以對main()中賦的值進行判斷後再賦值。這樣通過屬性Age使字段age的賦值結果更符合我們程序員的要求。上圖說明一下……



此時在main()中通過對人類的屬性Age賦值,就可控制我們隨意對年齡賦的值,這樣使字段age的結果更符合事實 ……

(注意:在main()方法中,如果p.Age = 18;此時會調用屬性Age中的set方法,並且值18會自動賦給value,然後在 屬性Age的set方法中做出判斷,再給字段age賦值!)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章