假设我想向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. 如何从C#扩展方法中访问'this'?
- 4. 是否可以从chrome扩展中访问COM对象?
- 5. 扩展方法可以修改扩展类的值吗?
- 6. PHP对象扩展$ this-> some_object->方法
- 7. javascript对象可扩展性限制方法吗?
- 8. 有什么方法可以从Spock扩展中访问Spring bean?
- 9. 可以从C#访问Beanshell对象吗?
- 10. 我可以得到扩展方法的Func对象
- 11. 我可以使用自己的扩展方法来删除对象吗?
- 12. 在javascript中访问扩展对象
- 13. 一个对象可以在scala中扩展抽象类吗?
- 14. 哪种方法可以使用自定义方法来扩展ExpressJS/Response对象?
- 15. 不能访问我的扩展方法
- 16. 可以通过反射访问.NET扩展吗?
- 17. Chrome扩展程序可以访问本地存储吗?
- 18. 我可以访问Sphere类的几何而不扩展吗?
- 19. iOS今日扩展可以访问本地存储吗?
- 20. IOS键盘扩展可以访问钥匙串吗?
- 21. 我可以通过Chrome扩展程序访问Gears吗?
- 22. Chrome扩展内容脚本可以访问window.opener吗?
- 23. RestEasy可以扩展@Path吗?
- 24. 我可以使用+/-等扩展对象吗?
- 25. uiselector类可以扩展为使用UI对象的ID吗?
- 26. SWIG Lua:使用%native扩展(%扩展)类。可以添加%native方法吗?
- 27. 我可以控制对萨克森州某些扩展功能的访问吗?
- 28. C#中有什么方法可以用扩展方法覆盖类方法吗?
- 29. PHP对象扩展问题
- 30. 扩展jquery $(this)
*参数的名称*而不是参数,否则是。 – 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