Yoc*_*mer 6 .net c# methods syntax extension-methods
我见过一些this在函数参数声明中使用关键字的代码.例如:
public static Object SomeMethod( this Object blah, bool blahblah)
Run Code Online (Sandbox Code Playgroud)
this在这种情况下,这个词意味着什么?
Bol*_*ock 13
这意味着SomeMethod()是一种扩展方法的Object类.
定义它之后,您可以在任何Object实例上调用此方法(尽管它已被声明static),如下所示:
object o = new Object();
bool someBool = true;
// Some other code...
object p = o.SomeMethod(someBool);
Run Code Online (Sandbox Code Playgroud)
该this Object参数引用您调用它的对象,实际上并未在参数列表中找到.
static在您将其称为实例方法时声明它的原因是因为编译器将其转换为IL中的实际静态调用.虽然这很深入,所以我不会详细说明,但这也意味着你可以将它称为任何静态方法:
object o = new Object();
bool someBool = true;
// ...
object p = ObjectExtensions.SomeMethod(o, someBool);
Run Code Online (Sandbox Code Playgroud)