What does “this” mean in a static method declaration?

前端 未结 3 1425
傲寒
傲寒 2021-01-18 08:30

I\'ve seen some code that uses the keyword this in the function parameter declaration. For example:

public static Object SomeMethod( this Object         


        
3条回答
  •  隐瞒了意图╮
    2021-01-18 09:26

    It means SomeMethod() is an extension method to the Object class.

    After defining it you can call this method on any Object instances (despite it being declared static), like so:

    object o = new Object();
    bool someBool = true;
    
    // Some other code...
    
    object p = o.SomeMethod(someBool);
    

    The this Object parameter refers to the object you call it on, and is not actually found in the parameter list.

    The reason why it's declared static while you call it like an instance method is because the compiler translates that to a real static call in the IL. That goes deep down though, so I shan't elaborate, but it also means you can call it as if it were any static method:

    object o = new Object();
    bool someBool = true;
    
    // ...
    
    object p = ObjectExtensions.SomeMethod(o, someBool);
    

提交回复
热议问题