C#这个

示例

该this关键字是指当前实例class(object)。这样,就可以区分两个具有相同名称的变量,一个在类级别(字段),一个是方法的参数(或局部变量)。

public MyClass {
    int a;

    void set_a(int a)
    {
        //this.a是指在方法外部定义的变量,
        //而a表示传递的参数。
       this.a= a;
    }
}

关键字的其他用法是链接非静态构造函数重载:

public MyClass(int arg) : this(arg, null)
{
}

和编写索引器:

public string this[int idx1, string idx2]
{
    get { /* ... */ }
    set { /* ... */ }
}

并声明扩展方法:

public static int Count<TItem>(this IEnumerable<TItem> source)
{
    // ...
}

如果有一个局部变量或参数没有冲突,这是一个风格问题是否使用this与否,所以this.MemberOfType并MemberOfType会在这种情况下等价的。另请参见base关键字。

请注意,如果要在当前实例上调用扩展方法,this则是必需的。例如,如果您在实现的类的非静态方法中,IEnumerable<>并且想要Count从之前调用扩展,则必须使用:

this.Count()  // 就像StaticClassForExtensionMethod.Count(this)

并且this不能在此省略。