2011-04-06 80 views

回答

6

是的,没有。简要介绍文档使其非常清楚。

每定义的扩展方法的第一个参数是指向方法从被叫/附接到对象,它实际上是由该关键字,但与它自己的名称引用的变量:

http://msdn.microsoft.com/en-us/library/bb383977.aspx

namespace ExtensionMethods 
{ 
    public static class MyExtensions 
    { 
     public static int WordCount(this String str) 
     { 
      return str.Split(new char[] { ' ', '.', '?' }, 
          StringSplitOptions.RemoveEmptyEntries).Length; 
     } 
    } 
} 

这使得在那里有一个名为“str”的“this”非常容易。所以,你不能使用“this”(因为这会指向定义扩展方法的类的不存在的实例),但是你可以声明自己的替换变量指向扩展方法所附加的对象。

1

否;你必须使用参数的实际名称。

+0

*参数的名称*而不是参数,否则是。 – 2011-04-06 05:26:21

+0

@Jon Skeet:[或者只是参数*?](http://stackoverflow.com/questions/1663705/difference-between-arguments-parameters-in-c/1663724#1663724) – BoltClock 2011-04-06 05:30:11

+0

@Jon:挑剔的方式:P但是,“争论”不是正确的名词。我立场纠正。 – Mehrdad 2011-04-06 05:33:33

相关问题