Это означает, что 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);