程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#——字段和屬性,

C#——字段和屬性,

編輯:C#入門知識

C#——字段和屬性,


//我的C#是跟著猛哥(劉鐵猛)(算是我的正式老師)《C#語言入門詳解》學習的,微信上猛哥也給我講解了一些不懂得地方,對於我來說簡直是一筆巨額財富,難得良師!

 

在剛開始學習屬性這一節時,開始還很覺得有意思,是一個全新的東西,但是慢慢的感覺學的很糊塗,想了想其根本在於自己把字段和屬性一直“搞不通”

當時的最大的疑惑就是:有了字段,為什麼還要有屬性呢?

今晚又看了一遍視頻,才有了一些思路

如果在一個類中有一個公有字段,那麼在這個類的外部我們可以自由無阻的使用這個字段,但是如果給這個字段賦了一個很“離譜”的值,那這對程序可能會造成很大的影響

比如:

Class Student

{

   public int Age;

}

在這個類外我們寫:

Student stu =new Student();

stu.Age = 1000;

眾所周知,人目前是不可能活到1000歲的,但是這樣賦值編譯器又不會報錯(假設外部沒有限制Age取值的邏輯),但是我們知道這個程序運行後的結果是有錯誤的

所以我們有了“屬性”這個東西,代碼可以這樣寫:

class Student
    {
        private int age;

        public int Age
        {
            get { return age; }
            set {
                if (value >= 0 && value <= 100)
                {
                    age = value; 
                }
                else 
                {
                    throw new Exception("Age value has error.");
                }
            }
        }

  這裡的value以為上下文關鍵字了

屬性裡的get,set訪問器可以對字段提供一些安全保護了(個人理解為使用一些邏輯來保護字段的值為“說的過去的”)

---------------------------------------------------------------------------------------------------------------

這是微軟官方C#編程指南裡的對屬性的定義:

“屬性是這樣的成員:它提供靈活的機制來讀取、編寫或計算某個私有字段的值。 可以像使用公共數據成員一樣使用屬性,但實際上它們是稱作“訪問器”的特殊方法。 這使得可以輕松訪問數據,此外還有助於提高方法的安全性和靈活性。”

---------------------------------------------------------------------------------------------------------------

從猛哥PPT裡摘抄的一段總結:

//屬性對外:暴露數據,數據可以是存儲在字段裡的,也可以是動態計算出來的

//對內:保護字段不受“非法值”污染

//一般情況下,它們都用於表示實體(對象或類型)的狀態

//屬性大多數情況下是字段的包裝器(wrapper)

//建議:永遠使用屬性(而不是字段)來暴露數據,即字段永遠是private或protected的

-----------------------------------------------------------------------------------------------------------------

希望網友們能夠收獲一些東西,也請大家指出我的錯誤(我的老師猛哥應該肯定無錯了),比如我的理解是否正確,希望大家一一指正,共同交流,共同指正!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved