我想为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;
}
答案 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;
}