正在阅读:C# 最强大的功能--泛型简介C# 最强大的功能--泛型简介

2005-06-23 10:16 出处: 作者:Juval Lowy 责任编辑:moningfeng

一般接口还可以产生更加干净一些的解决方案:

public interface ICalculator
{
T Add(T arg1,T arg2);
//Rest of the methods
}
public class MyCalculator : ICalculator
{
public int Add(int arg1, int arg2)
{
return arg1 + arg2;
}
//Rest of the methods
}




一般方法
在 C# 2.0 中,方法可以定义特定于其执行范围的一般类型参数:

public class MyClass
{
public void MyMethod(X x)
{...}
}



这是一种重要的功能,因为它使您可以每次用不同的类型调用该方法,而这对于实用工具类非常方便。

即使包含类根本不使用泛型,您也可以定义方法特定的一般类型参数:

public class MyClass
{
public void MyMethod(T t)
{...}
}



该功能仅适用于方法。属性或索引器只能使用在类的作用范围中定义的一般类型参数。

在调用定义了一般类型参数的方法时,您可以提供要在调用场所使用的类型:

MyClass obj = new MyClass();
obj.MyMethod(3);



因此,当调用该方法时,C# 编译器将足够聪明,从而基于传入的参数的类型推断出正确的类型,并且它允许完全省略类型规范:

MyClass obj = new MyClass();
obj.MyMethod(3);



该功能称为一般类型推理。请注意,编译器无法只根据返回值的类型推断出类型:

public class MyClass
{
public T MyMethod()
{}
}
MyClass obj = new MyClass();
int number = obj.MyMethod();//Does not compile



当方法定义它自己的一般类型参数时,它还可以定义这些类型的约束:

public class MyClass
{
public void SomeMethod(T t) where T : IComparable
{...}
}


键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品