[英]How to see what class was passed into template in Rider as an argument?
[英]What kind of argument is passed?
我是C#的新手,我想知道在以下函数的Window部分类中传递什么样的参数:
public static void process(this Window window){...}
我知道类型是Window
,但是为什么它似乎具有参数-类型-参数语法? 实际传递的是什么作为参数。
谢谢
PS:我确实忘记了静态部分! 对不起大家!
假设您忘记了签名的静态部分,这是一种扩展方法。 装饰器模式的替代方法,使您可以向现有类添加功能。 this
在签名指定,这是要扩展的类。 例如:
var w = new Window();
w.Process();
在这种方法中,您不会传递任何参数。 它是称为Window
的类型的扩展方法。 (为了不被误解,我们可以将参数传递给扩展方法,但是此扩展方法没有任何参数。)因此可以如下使用:
window.process()
其中window
是Window
的实例。
有关扩展方法的更多文档,请在此处查看 。
假设您打算添加static
修饰符,则这是一个Extnsion方法,可以通过object-method语法进行校准。 尽管如此,编译器仍会在编译时将其转换为type-method(object)语法,它只是第一种方式作为语法糖。 这就是为什么有关无法识别的方法的错误包括no extension method accepting a first argument of type...
子句no extension method accepting a first argument of type...
。
这是C#“扩展方法”功能。 它允许您使用代码扩展其他类。
因此,例如,您可以向“ int”类型添加新方法。
您发布的方法是扩展Window类,并向其添加“过程”方法(根据C#标准,它应命名为“过程”)。 它允许您在代码中使用,如下所示:
window.process();
您可以在此处详细了解如何使用它们,例如: http : //msdn.microsoft.com/zh-cn/library/bb383977.aspx
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.