我看过一些使用关键字this
在函数参数声明中的代码。例如:
public static Object SomeMethod( this Object blah, bool blahblah)
在这个语境中,
this
这个词是什么意思?我看过一些使用关键字this
在函数参数声明中的代码。例如:
public static Object SomeMethod( this Object blah, bool blahblah)
this
这个词是什么意思?这意味着SomeMethod()
是Object
类的一个扩展方法。
在定义之后,您可以在任何Object
实例上调用此方法(尽管它被声明为static
),如下所示:
object o = new Object();
bool someBool = true;
// Some other code...
object p = o.SomeMethod(someBool);
this Object
参数指的是在其上调用它的对象,并且实际上并不在参数列表中。
尽管您像调用实例方法一样调用它,但它声明为static
是因为编译器将其转换为IL中的真正静态调用。这项技术很深奥,我就不详细解释了,但这也意味着您可以像调用任何静态方法一样调用它:
object o = new Object();
bool someBool = true;
// ...
object p = ObjectExtensions.SomeMethod(o, someBool);
.SomeMethod
调用SomeMethod。在.
之前的对象将成为blah参数。string s = "sdfsd";
Object result = s.SomeMethod(false);
扩展方法将适用于继承自this
参数类型的所有类型,即object类型。如果你有SomeMethod(this IEnumerable<T> enumerable)
,它将适用于所有IEnumerable<T>
类型,例如List<T>
。