C#泛型函数问题

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在参数前面.

如名称所示,扩展方法用于使用方法扩展已存在的类,如果您无权访问源,或者您希望在广泛的类集上使用它.重要的是要注意,当您从类派生时,在类型上创建扩展方法时,您无法访问私有和受保护的方法等.

另外,为了深入解释:

扩展方法(C#编程指南)


Alb*_*nbo 7

它是一个扩展方法,它成为T类型所有对象的有效方法.

它与泛型无关.

  • 关于`this`关键字与泛型无关的好点. (3认同)