转:C# 泛型编程之泛型类、泛型方法、泛型约束
public class MyClass<T> where T:IComparable<T>
{
public void MyMethod<X>(X x,T t) where X:IComparable<X>
{
//
}
}
泛型参数虚方法的重写:子类方法必须重新定义该方法特定的泛型参数,代码如下
public class MyBaseClass
{
public virtual void SomeMethod<T>(T t)
{
//
}
}
public class MyClass :MyBaseClass
{
public override void SomeMethod<X>(X x)
{
}
}
同时子类中的泛型方法不能重复基类泛型方法的约束,这一点和泛型类中的虚方法重写是有区别的,代码如下
public class MyBaseClass
{
public virtual void SomeMethod<T>(T t) where T:new()
{
//
}
}
public class MyClass :MyBaseClass
{
//正确写法
public override void SomeMethod<X>(X x)
{
}
////错误 重写和显式接口实现方法的约束是从基方法继承的,因此不能直接指定这些约束
//public override void SomeMethod<X>(X x) where X:new()
//{
//}
}
子类方法调用虚拟方法的基类实现:它必须指定要代替泛型基础方法类型所使用的类型实参。你可以自己显式的指定它,也可以依靠类型推理(如果可能的话)代码如下:
public class MyBaseClass
{
public virtual void SomeMethod<T>(T t) where T:new()
{
//
}
}
public class MyClass :MyBaseClass
{
//正确写法
public override void SomeMethod<X>(X x)
{
base.SomeMethod<X>(x);
base.SomeMethod(x);
}
}
泛型委托
在某个类中定义的委托可以使用该类的泛型参数,代码如下
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/71259.html
- 上一篇:Windows Server 2012 将资源发布到 AD DS
- 下一篇:没有了