假設我想向B類中添加擴展方法。 我可以通過在我的擴展方法中使用「this」引用來獲取對B類實例的引用嗎?擴展方法可以訪問「this」對象嗎?
2
A
回答
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
否;你必須使用參數的實際名稱。
相關問題
- 1. C#擴展方法可以訪問私有變量嗎?
- 2. 訪問擴展對象
- 3. 擴展方法需要「this」?
- 4. 如何從C#擴展方法中訪問'this'?
- 5. 擴展方法可以修改擴展類的值嗎?
- 6. 是否可以從chrome擴展中訪問COM對象?
- 7. 我們可以使用對象訪問靜態方法嗎?
- 8. PHP對象擴展$ this-> some_object->方法
- 9. JSON對象可以擴展另一個json對象嗎?
- 10. c#:在擴展方法中訪問對象屬性
- 11. javascript對象可擴展性限制方法嗎?
- 12. 可以使用擴展方法訪問web.config
- 13. 有什麼方法可以從Spock擴展中訪問Spring bean?
- 14. 可以從C#訪問Beanshell對象嗎?
- 15. 我可以使用自己的擴展方法來刪除對象嗎?
- 16. 我可以得到擴展方法的Func對象
- 17. 在javascript中訪問擴展對象
- 18. 訪問擴展ArrayList對象的元素
- 19. 一個對象可以在scala中擴展抽象類嗎?
- 20. 我可以創建可通過不同方法訪問的單個對象嗎?
- 21. 擴展方法需要「this」來調用?
- 22. 哪種方法可以使用自定義方法來擴展ExpressJS/Response對象?
- 23. 不能訪問我的擴展方法
- 24. 訪問擴展分類方法
- 25. 訪問擴展方法的變量(C#)
- 26. 可以通過反射訪問.NET擴展嗎?
- 27. Chrome擴展程序可以訪問搜索引擎設置嗎?
- 28. Chrome擴展程序可以訪問本地存儲嗎?
- 29. 我可以通過Chrome擴展程序訪問Gears嗎?
- 30. 我可以訪問其他擴展程序的JavaScript變量嗎?
*參數的名稱*而不是參數,否則是。 – 2011-04-06 05:26:21
@Jon Skeet:[或者只是參數*?](http://stackoverflow.com/questions/1663705/difference-between-arguments-parameters-in-c/1663724#1663724) – BoltClock 2011-04-06 05:30:11
@Jon:挑剔的方式:P但是,「爭論」不是正確的名詞。我立場糾正。 – Mehrdad 2011-04-06 05:33:33