.NET/C# 類建構函式中this的用法

來源:互聯網
上載者:User

標籤:

  在C#中this用來指代當前對象,用於當成員函數中的形參名跟成員變數名一致時,進行區分。

  但this不僅僅只有這一作用,this還可以如下這樣用:

    class class1    {        private int i_a;        private string s_a;        public class1()        {            i_a = 0;            s_a = "default";        }        public class1(int i_a)        {            if (i_a > 5 && i_a < 10)            {                this.i_a = i_a;            }            s_a = "defalt";        }        public class1(string s_a)        {            this.i_a = 0;            this.s_a = s_a;        }        public class1(int i_a, string s_a)        {            if (i_a > 5 && i_a < 10)            {                this.i_a = i_a;            }            this.s_a = s_a;        }        public void print()        {            Console.WriteLine("i_a = {0}", i_a);            Console.WriteLine("s_a = {0}", s_a);        }   }

 注意到,這個對成員變數i_a的值的評鑑操作在第2跟第4個建構函式中重複了兩次,如果這個操作複雜一點,這樣的變數多一點,那重複代碼就大大增加,影響了代碼的維護性,一旦這個操作規則變化了,改動起來就比較麻煩,所以好的方法當然是將這個評鑑操作提取出來,放到一個單獨的函數中,然後統一調用,不過C#還提供了這樣一種機制來,如下:

    class class1    {        private int i_a;        private string s_a;        public class1()        {            i_a = 0;            s_a = "default";        }        public class1(int i_a):this(i_a,"default"){}        public class1(string s_a):this(0,s_a){}        public class1(int i_a, string s_a)        {            if (i_a > 5 && i_a < 10)            {                this.i_a = i_a;            }            this.s_a = s_a;        }        public void print()        {            Console.WriteLine("i_a = {0}", i_a);            Console.WriteLine("s_a = {0}", s_a);        }   }

 另外,this還可以用在索引器中。

.NET/C# 類建構函式中this的用法 (轉)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.