泛型的使用

类型参数T

泛型的类型参数T可以看作是一个占位符,它不是一种类型,它仅代表了某种可能的类型。类型参数T可以在使用时用任何类型来代替。

类型参数T的命名准则如下:

使用描述性名称命名泛型类型参数,除非单个字母名称完全可以让人了解它表示的含义,而描述性名称不会有更多的意义。

public interface ISessionChannel<TSession>

{

TSession session{ get;}

}

 

泛型接口

Interface 接口名 <T>

{

接口体

}

在实例化泛型时也可以使用约束对类型参数的类型种类施加限制,约束是使用where上下文关键字指定的。下面列出了6种类型的约束:

a).T:结构——类型参数必须是值类型。可以指定除Nullable以外的任何值类型。

b).T:类——类型参数必须是引用类型。这一点也使用于任何类、接口、委托或数组类型。

c).T:new()——类型参数必须具有无参数的公共构造函数。当与其他约束一起使用时,new()约束必须最后指定。

d).T:<基类名>——类型参数必须是指定的基类或派生自指定的基类。

e).T:<接口名称>——类型参数必须是指定的接口或实现指定的接口。可以指定多个接口约束。约束接口也可以是泛型的。

f).T:U——为T提供的类型参数必须是为U提供的参数或派生自为U提供的参数。这称为裸类型约束。

// 创建一个泛型接口

public interface IGenericInteface<T>

{

T CreateInstance();

}

// 实现上面泛型接口的泛型类

// 派生约束 where T:TI(T要继承自TI)

// 构造函数约束where T:new()(T可以实例化)

public class Factory<T, TI>: IGenericInteface<TI> where T:TI,new()

{

public TI CreateInstance()

{

return new T();

}

}

 

泛型方法

修饰符 void 方法名<类型参数 T>

{

}

注:泛型方法可以使用多类型参数进行重载。

Public static int Find<T>(T[] items, T item)

{}

Int I = Finer.Find<int>(new int[]{1,2,3,4,5,6}, 6);

 

 

《C#从入门到精通》读后总结

 

转载于:https://www.cnblogs.com/hmliang/p/5325235.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值