为什么我们在扩展方法中使用"this"?

Moh*_*oud 14 c#

我想问为什么我们在扩展方法(C#语言)中的参数之前使用"this"关键字...........喜欢这个函数:

    public static int ToInt(this string number)
    {
        return Int32.Parse(number);
    }
Run Code Online (Sandbox Code Playgroud)

我知道我们必须使用它,但我不知道为什么.

Mat*_*nen 9

因为这是你告诉编译器它首先是一个扩展方法的方式.否则它只是一个普通的静态方法.我猜他们之所以选择this这样,他们就不必提出新的关键字并可能破坏旧代码.

  • C#有更多美味的语法糖,这就是我喜欢它的原因. (2认同)

Mar*_*ell 6

对于信息,this作为上下文关键字的重要性在很大程度上是因为它避免引入新的关键字.每当您引入新关键字时,您都有可能破坏将其用作变量/类型名称的代码.this有一些有用的功能:

  • 足够接近表明这与实例方法有关
  • 它是一个现有的关键字......
  • ......在那个地方使用时本来是非法的

这意味着不会破坏现有代码.

除了this作为关键字的选择之外,它只是编译器的一种方便的语法,比[Extension]手动添加更方便.没有任何一个,它只是一个静态方法,没有任何特殊行为.