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不能在此省略。