<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      C#中的屬性

      公眾號「DotNet學習交流」,分享學習DotNet的點滴。

      簡介

      屬性是代表類的實例或類中的一個數據項的成員,使用屬性看起來非常像寫入或讀取一個字段,語法是相同的。

      下面的代碼展示了名稱為D的類的使用,它有一個公有字段和一個公有屬性,從用法無法區分它們。

      D d = new D();
      ?
      d.MyField = 7; //給字段賦值
      d.MyProperty = 10; //給屬性賦值
      Console.WriteLine($"{d.MyField} {d.MyProperty}"); //讀取字段和屬性

      與字段類似,屬性有如下特征:

      1、它是命名的類成員。

      2、它有類型。

      3、它可以被賦值和讀取。

      和字段不同的是,屬性是一個函數成員。

      1、它不為數據存儲分配內存。

      2、它執行代碼。

      一個關于屬性的簡單示例

      代碼如下:

      public class Person
      {
         private string name; // 私有字段
      ?
         public string Name
        {
             get
            {
                 // 這是屬性的get訪問器,用于獲取屬性的值
                 return name;
            }
             set
            {
                 // 這是屬性的set訪問器,用于設置屬性的值
                 name = value;
            }
        }
      }

      這個示例的圖示如下:

      image-20231108083339273

      在這個示例中,Name 屬性提供了對 name 字段的訪問,但它本身并不存儲數據。當您使用 person.Name 讀取屬性時,實際上調用了屬性的get訪問器來獲取字段的值,而當您使用 person.Name = "John" 設置屬性時,實際上調用了屬性的set訪問器來設置字段的值。

      屬性聲明和訪問器

      set和get訪問器有預定義的語法和語義。可以把set訪問器想象成一個方法,帶有單一的參數“設置”屬性的值,get訪問器沒有參數并從屬性返回一個值。

      set訪問器的特點

      1、有一個單獨的、隱式的值參,名稱為value,與屬性的類型相同。

      2、返回類型void。

      get訪問器的特點

      1、沒有參數。

      2、返回類型與屬性類型相同。

      屬性和關聯字段

      屬性常和字段關聯,一種常見的方式是在類中將字段聲明為private以封裝該字段,并聲明一個public屬性來控制從類的外部對該字段的訪問,和屬性關聯的字段常被稱為后備字段或后備存儲。

      屬性和它們的后備字段有幾種命名約定。

      一種約定是兩個名稱使用相同的內容,但字段使用Camel大小寫,屬性使用Pascal大小寫。(Camel大小寫風格中,復合詞標識符中每個單詞的首字母大寫,出來第一個單詞,其余字母都是小寫,Pascal大小寫風格中,復合詞中每個單詞的首字母都是大寫。)

      另一種約定是屬性使用Pascal大小寫,字段使用相同標識符的Camel大小寫版本,并以下劃線開始。

      兩種約定的示例代碼如下:

              // 第一種約定的寫法
             private int firstField; // Camel大小寫
             public int FirstField   // Pascal大小寫
            {
                 get { return firstField; }
                 set { firstField = value;}
            }
      ?
             // 第二種約定的寫法
             private int _secondField; // 下劃線及Camel大小寫
             public int SecondField   // Pascal大小寫
            {
                 get { return _secondField; }
                 set { _secondField = value; }
            }

      只讀和只寫屬性

      要想不定義屬性的某個訪問器,可以忽略該訪問器的聲明。

      只有get訪問器的屬性稱為只讀屬性。只讀屬性是一種安全的,把一項數據從類或類的實例中傳出,而不允許太多訪問方法。

      只有set訪問器的屬性稱為只寫屬性。只寫屬性是一種安全的,把一項數據從類的外部傳入類,而不允許太多的訪問的方法。

      兩個訪問器至少有一個必須定義,否則編譯器會報錯,如下圖所示:

      image-20231108090006210

      自動實現屬性

      因為屬性經常被關聯到后備字段,C#提供了自動實現屬性(automatically implemented property),允許只聲明屬性而不聲明后備字段,編譯器會為我們創建隱藏的后備字段,并且自動掛接到get和set訪問器上。

      自動實現屬性的注意點:

      1、不聲明后備字段,編譯器會根據屬性的類型分配存儲。

      2、不能提供訪問器的方法體,它們必須被簡單地聲明為分號。get擔當簡單的內存讀,set擔當簡單的寫。

      3、只有通過訪問器才能訪問后備字段。因為不能用其他的方法訪問它,所以實現只讀和只寫屬性沒有意義,因此必須同時提供讀寫訪問器。

      一個自動實現屬性的示例,代碼如下:

          public class Person
        {
             public string Name   // 沒有聲明后備字段
            {
                 get; set;        // 訪問器的方法體被聲明為分號
            }
      ?

        }
             internal class Program
        {
             static void Main(string[] args)
            {
                 Person person = new Person();
                 Console.WriteLine(person.Name); // 想使用規則屬性那樣使用自動屬性
                 person.Name = "小王";
                 Console.WriteLine(person.Name);
            }
        }

      運行結果如下圖所示:

      image-20231108093147756

      參考資料

      《C#圖解教程(第4版)》——Daniel M. Solis

      posted @ 2023-11-20 15:10  mingupupup  閱讀(910)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 厦门市| 国产一级毛片高清完整视频版| 亚洲精品无码久久千人斩| 久久99精品国产99久久6尤物| 国产三级精品三级| 亚洲avav天堂av在线网爱情| 久久99热成人精品国产| 狠狠色综合久久丁香婷婷| 亚洲性图日本一区二区三区| 日韩av中文字幕有码| 怀安县| 久热这里有精品视频播放| 成人免费在线播放av| 波多野结衣av无码| 亚洲熟女乱一区二区三区| 亚洲AV日韩精品久久久久| 精品蜜臀国产av一区二区| 成人三级视频在线观看不卡| 国产福利社区一区二区| 久热这里有精品视频播放| 久久国产成人午夜av影院| 国产精品久久久久久久久鸭| 国产在线欧美日韩精品一区| 人妻少妇偷人精品一区| 国产九九视频一区二区三区| 人妻激情另类乱人伦人妻| 狼色精品人妻在线视频| 国产青榴视频在线观看| 亚洲国产良家在线观看| 久久国内精品自在自线观看| 中国女人和老外的毛片| 91麻豆精品国产91久| 自拍视频在线观看三级| 高清性欧美暴力猛交| 色偷偷中文在线天堂中文| 红桃视频成人传媒| 日韩一区二区三区日韩精品| 激情综合网址| 国产亚洲一区二区三不卡| 人妻少妇无码精品专区| 极品粉嫩小泬无遮挡20p|