List <t>的扩展方法,包含约束类和结构

时间:2017-11-30 13:10:35

标签: c# .net

我想为List<MyClass>List<int>List<string>以及其他类型编写扩展程序。

我试着写这段代码:

public static int MyMethod<T>(this List<T> list) where T : struct  where T : class
{
    int result = //do something
    return result;
}

1 个答案:

答案 0 :(得分:1)

由于没有既不是类也不是结构的类型,将两个约束应用于您的成员是多余的。因此,您可以完全省略它,使您的方法适用于任何 T

public static int MyMethod<T>(this List<T> list)
{
    int result = //do something
    return result;
}

除此之外,您当然可以为方法添加多个约束,例如:这样:

public void DoSomething<T>() where T: class, new() { /* ... */ }

这将使这个方法对于带有无参数构造函数的引用类型。

编辑:当你考虑到某些特定类型时,你应该考虑创建两个方法,因为你不能对整数和字符串做很多事情。所以制作两种方法:

public static int MyMethodForInt(this List<string> list)
{
    int result = //do something
    return result;
}
public static int MyMethodForString(this List<int> list)
{
    int result = //do something
    return result;
}