扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:pw 来源:博客园 blog 2007年11月11日
关键字:
using System; using System.Collections.Generic; using System.Text; namespace GenericTest { class GenericClass { //申明一个泛型方法 public T getvalue<T>(T t) { return t; } //调用泛型方法 //注意:在调用泛型方法时,对泛型方法的类型参数实例化 public int useMethod() { return this.getvalue<int>(10); } //重载getvalue方法 public int getvalue(int i) { return i; } } //下面演示覆盖 //要注意的是,泛型方法被覆盖时,约束被默认继承,不需要重新指定约束关系 abstract class Parent { public abstract K TEST<K, V>(K k, V v) where K : V; } class Child : Parent { public override T TEST<T, S>(T t, S s) { return t; } } } |
class A { public void F1() {} } class B { public void F2() {} } class C<S,T> where S: A // S继承自A where T: B // T继承自B { // 可以在类型为S的变量上调用F1, // 可以在类型为T的变量上调用F2 } |
interface IPrintable { void Print(); } interface IComparable<T> { int CompareTo(T v);} interface IKeyProvider<T> { T GetKey(); } class Dictionary<K,V> where K: IComparable<K> where V: IPrintable, IKeyProvider<K> { // 可以在类型为K的变量上调用CompareTo, // 可以在类型为V的变量上调用Print和GetKey } |
class A { public A() { } } class B { public B(int i) { } } class C<T> where T : new() { //可以在其中使用T t=new T(); } C<A> c=new C<A>(); //可以,A有无参构造器 C<B> c=new C<B>(); //错误,B没有无参构造器 |
public struct A { } public class B { } class C<T> where T : struct { // T在这里面是一个值类型 } C<A> c=new C<A>(); //可以,A是一个值类型 C<B> c=new C<B>(); //错误,B是一个引用类型 |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者