2011-04-06 63 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

相關問題