C# 泛型编程之泛型类、泛型方法、泛型约束
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);
}
}
泛型委托
在某个类中定义的委托可以使用该类的泛型参数,代码如下
public class MyClass<T>
{
public delegate void GenericDelegate(T t);
public void SomeMethod(T t)
{
}
}
public GenericMethodDemo()
{
MyClass<int> obj = new MyClass<int>();
MyClass<int>.GenericDelegate del;
del = new MyClass<int>.GenericDelegate(obj.SomeMethod);
del(3);
}
委托推理:C#2.0使你可以将方法引用的直接分配转变为委托变量。将上面的代码改造如下
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/68078.html
- 上一篇:Windows系统安装时间
- 下一篇:【C#】C#容易忽视的错误