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

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

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

      將不確定變?yōu)榇_定~類中的屬性何時被執(zhí)行

      回到目錄

      對于類中的屬性何時被的執(zhí)行,我之前的看法是,當(dāng)類被初始化時,自動去執(zhí)行,就是類中的字段一樣,但昨天在技術(shù)會議上,同事提出了不同的看法,意思是屬性的Getter塊在被使用時,才會被執(zhí)行?這個有點意思,這種說法就是說,屬性不僅是為字段的封裝,而且它還可以實現(xiàn)延時的使用,即在被Getter時,才執(zhí)行Get,再被Setter時,才執(zhí)行Set塊,而如果這個提議是正確的,那我之前理解的就是錯誤的,所以,我需要用代碼來證明它。

      相關(guān)代碼:

       class Program
          {
              static void Main(string[] args)
              {
                  TestPropery tp = new TestPropery();
                  Console.WriteLine(tp.Display);
                  Console.ReadKey();
              }
          }
      
          public class TestPropery
          {
              string _name;
              public string Display="初始值";
              public string Name
              {
                  get
                  {
                      if (_name == null)
                      {
                          Display = "Getter";
                          _name = "zzl";
                      }
                      return _name;
                  }
                  set
                  {
                      Display = "Setter";
                      _name = value;
                  }
              }
          }

      這是意思是說,當(dāng)對象被實例化時,不去使用Name屬性,看看Display的結(jié)果:

      而當(dāng)我們使用Name的Getter塊時,即它將的值取出來,賦給一個對象,代碼如下:

        static void Main(string[] args)
              {
                  TestPropery tp = new TestPropery();
                  var a = tp.Name;//觸發(fā)這個屬性的Getter
                  // tp.Name = "bobo";//觸發(fā)這個屬性的Setter
                  Console.WriteLine("Display=" + tp.Display);
                  Console.ReadKey();
              }

      結(jié)果就為:

      而當(dāng)代碼中使用Name的Setter塊時,即為Name屬性賦值為,代碼如下:

      static void Main(string[] args)
              {
                  TestPropery tp = new TestPropery();
                  //var a = tp.Name;//觸發(fā)這個屬性的Getter
                   tp.Name = "bobo";//觸發(fā)這個屬性的Setter
                  Console.WriteLine("Display=" + tp.Display);
                  Console.ReadKey();
              }

      結(jié)果就為:

      通過上面的測試,使用我明白了,原來我之前對C#屬性的認(rèn)識是錯誤的,人家微軟設(shè)計的屬性,在執(zhí)行上是效率極高的,用到哪個塊,才運行哪個塊,而不是類在初始化時同步運行的!實事上,在linq to sql的原文件時,也有對屬性的運用,只是當(dāng)時沒有去認(rèn)識考慮它,linq to sql中的運用,代碼如下:

            public string ExceptionID
                {
                    get
                    {
                        return this._ExceptionID;
                    }
                    set
                    {
                        if ((this._ExceptionID != value))
                        {
                            this.OnExceptionIDChanging(value);
                            this.SendPropertyChanging();
                            this._ExceptionID = value;
                            this.SendPropertyChanged("ExceptionID");
                            this.OnExceptionIDChanged();
                        }
                    }
                }

      詳細(xì)說明請看我的從微軟的DBML文件中我們能學(xué)到什么(它告訴了我們什么是微軟的重中之重)~五 LINQ實體類中對屬性的賦值,變化前與變化后SendPropertyChanging與SendPropertyChanged這篇文章。

      回到目錄

      posted @ 2013-10-17 09:20  張占嶺  閱讀(923)  評論(1)    收藏  舉報
      主站蜘蛛池模板: 新乐市| 日本午夜精品一区二区三区电影| 狠狠亚洲色一日本高清色| 男人的天堂av社区在线| 国产成人精品2021欧美日韩| 一本大道久久a久久综合| 最新亚洲av日韩av二区| 天堂va亚洲va欧美va国产| 国产欧美日韩亚洲一区二区三区| 欧美中文亚洲v在线| 日本亚洲一区二区精品| 无码人妻精品一区二区三| 亚洲综合国产激情另类一区| 桂林市| 国产精品色三级在线观看| 国产偷国产偷亚洲高清日韩| 中文午夜乱理片无码| 亚洲午夜理论无码电影| 午夜久久一区二区狠狠干| 大地资源网第二页免费观看| 99久久国产福利自产拍| 国产精品日韩专区第一页| 久久一日本道色综合久久| 午夜射精日本三级| 草草浮力影院| 国产成人无码区免费内射一片色欲 | 亚洲午夜精品毛片成人播放| 一本大道无码av天堂| 部精品久久久久久久久| 国产精品中文字幕第一区| 国产浮力第一页草草影院| 久久热这里只有精品99| 国产精品国产三级国AV| 高清性欧美暴力猛交| 国产黑色丝袜在线播放| 亚洲中文无码av在线| 久久国产成人午夜av影院| 日韩人妻少妇一区二区三区 | 国产日韩久久免费影院| 国产又色又爽无遮挡免费动态图| 久久91精品牛牛|