扩展方法可以访问“this”吗?目的?
假设我想向 B 类添加一个扩展方法。 我可以通过在扩展方法中使用“this”引用来获取对调用扩展方法的类 B 实例的引用吗?
Lets say I want to add an extension method to class B.
Can I get a reference to the instance of class B the extension method is invoked on by using the "this" reference inside my extension method?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
是和不是。简单浏览一下文档就会非常清楚。
根据定义,扩展方法的第一个参数是指向调用该方法/附加到该方法的对象的指针,它实际上是由 this 关键字引用的变量,但具有自己的名称:
http://msdn.microsoft.com/en-us/library/bb383977.aspx
这使得很容易有一个“这个”那里,名为“str”。因此,您不能使用“this”(因为这将指向定义扩展方法的类的不存在实例),但您可以声明自己的替换变量,指向扩展方法所附加的对象。
Yes and no. A short look at the documentation makes it VERY clear.
Per definition the first parameter of an extension method is the pointer to the object the method was called from / attached to, and it actually is a variable referenced by the this keyword but with it's own name:
http://msdn.microsoft.com/en-us/library/bb383977.aspx
That makes it quite easy that there is a "this" there, named "str". So, you can not use "this" (because that would point to the non-existing instance of the class the extension method is defined on), but you can declare your own replacement variable pointing to the object an extension method is attached to.
不;您必须使用参数的实际名称。
No; you have to use the actual name of the argument.