为什么扩展方法需要"静态"和"这个",它们的内存如何分配?

Nis*_*ant 8 .net c# extension-methods

关于扩展方法的一些问题:

  1. 为什么扩展方法是静态的?

  2. 为什么需要在静态类中声明它们?

  3. 这个关键字在扩展方法的参数列表中表示什么?由于它是一个静态类,"this"关键字如何在此上下文中工作?

  4. 对于这些类型的方法,内存分配是如何发生的?

Ily*_*gan 8

静态方法和非静态方法之间的唯一区别是非静态方法接收隐式参数 - this.扩展方法不会在声明方法的对象的上下文中调用,因此无法将它们传递给this引用,因此它们必须是静态的.

你不能this在扩展方法中使用关键字,我希望这能回答你的第三个问题.this参数列表中的关键字仅用于指示此方法扩展的类型.

你对内存分配有什么问题?扩展方法就像任何其他静态方法一样,只有调用语法不同.