C#泛型函数问题

标签 c# extension-methods

如何理解下面的代码?通用函数原型(prototype)中的“this”是什么意思?谢谢!

public static class MyExtensions
{
    public static MyStream<T> MySingle<T>(this T source)
    {
        return new MyStream<T>(source);
    }
}

最佳答案

this 在此上下文中表示它是一种扩展方法,因此您可以以“正常”方式使用它:

MyExtensions.MySingle(someSource)

或者这种(有时更好的)方式:

someSource.MySingle()

只有当方法是 static 并且在 static 类中时才有可能。此外,它与方法的泛型方面无关 - 您可以创建没有泛型方面的扩展方法,并且您仍然在参数前面有 this

扩展方法,顾名思义,用于在您无权访问源代码或希望在广泛的类集上使用它时使用方法扩展现有的类。重要的是要注意,您无法访问私有(private)和 protected 方法等,例如当您从类派生时,当您在类型上创建扩展方法时。

另外,为了深入解释:

Extension Methods (C# Programming Guide)

关于C#泛型函数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3570088/

相关文章:

C# 单元测试 StreamWriter 参数

c# - Xamarin 表格 : StackLayout inside RelativeLayout is not filling the whole screen

C# 扩展方法 - 返回调用对象

c# - 从列表中选择<T>

c# - 仅针对发布版本从项目文件中删除注释

c# - 从其他窗口获取 ListView 项目

c# - 替换时区

python - Python中的扩展方法

c# - 在 C# 中的数组上使用 Contains() 扩展方法

c# - 为什么有人说 "Builder Pattern"比使用 Fluent 接口(interface)的扩展方法更好?