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;
        }
    }


posted @ 2014-06-24 14:43  漫长当下  阅读(5030)  评论(0编辑  收藏  举报