C#this關鍵字用法


用法一

this關鍵字的作用是解決當傳入參數的名稱和數據字段的名稱,類型完全相同時產生的作用於歧義,一般情況下我們應該避免產生重名的習慣

先來演示下:

class Airplane
    {
        public int age;
        public string name;
        public void SetDeriverName(string name)
        {
            name = name;
        }
    }
調用上面的類實例

Airplane fly = new Airplane();
            fly.SetDeriverName("Jack");
            Console.WriteLine("駕駛員的名字是:{0}", fly.name);
編譯上面代碼時候,VS會給出警告,並且fly.name字段的內容為空。我們通過SetDeriverName給數據成員name字段賦值根本無效;問題在於編譯器認為賦值號右邊的name指向當然方法作用域內的變量,而不是類作用域中的字段。要想讓編譯器知道賦值號右邊的name是准備賦值給類數據成員name字段的,可以使用this關鍵字解決這個問題,只需在數據成員前使用this關鍵字即。事實上this是可選的,當不存在重名時候,根本不需要使用this



當我們使用this之后,VS的智能感知,自動的識別出this.name 就是public string name中的name字段

用法二

用this串聯構造函數

this的另一個用法是用來串聯構造函數,用法如下:

        public Airplane() { }
        public Airplane(int currAge)
        {
            if(currAge<25)
            {
                currAge = 25;
            }
            age = currAge;
        }
        public Airplane(int currAge, string name)
        {
            if(currAge<25)
            {
                currAge = 25;
            }
            age = currAge;
            this.name = name;
        }
    


        public Airplane() { }
        public Airplane(int currAge)
            : this(currAge, "") { }
        public Airplane(int currAge, string name)
        {
            if(currAge<25)
            {
                currAge = 25;
            }
            age = currAge;
            this.name = name;
        }
    }



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM