dav*_*vid 6 c# extension-methods
如何理解以下代码?"这个"在通用函数原型中意味着什么?谢谢!
public static class MyExtensions
{
public static MyStream<T> MySingle<T>(this T source)
{
return new MyStream<T>(source);
}
}
Run Code Online (Sandbox Code Playgroud)
Las*_*olt 16
this 在这种情况下,它意味着它是一种扩展方法,因此您可以使用"正常"方式:
MyExtensions.MySingle(someSource)
或者这种(有时更好的)方式:
someSource.MySingle()
这仅在方法是static和在static类中时才可能.此外,它与方法的通用方面无关 - 您可以在没有泛型方面的情况下创建扩展方法,并且您仍然可以this在参数前面.
如名称所示,扩展方法用于使用方法扩展已存在的类,如果您无权访问源,或者您希望在广泛的类集上使用它.重要的是要注意,当您从类派生时,在类型上创建扩展方法时,您无法访问私有和受保护的方法等.
另外,为了深入解释: