【C#食谱】【面食】菜单1: 何时何地使用泛型

问题

你想在一个新的项目中使用,或在现有的项目上把非泛型的类型转换成它们的泛型表示。但是,你却不知道自己为什么想这样做,并且你也不知道哪些非泛型类型应该被转换成它们的泛型表示。

解决方法

决定何时何地使用泛型,你需要考虑以下几件事:

l         你的类型将包含或者以多种不确定的数据类型来运行吗?如果是这样,那么创建一个泛型将比创建一个非泛型提供很多好处。如果你的类型将只以一种确定的类型运行,那么你就没必要去创建一个泛型了。

l         如果你的类型是值类型,那么就会发生装箱和拆箱操作,你应该考虑使用泛型去避免这些操作。

l         跟泛型关联的强类型检查会导致很快就检查到错误(比如在编译时,而不是在运行时),因此,缩短你的纠错周期。

l         随着你要写好几个类去处理不同的数据类型的运行(比如一个ArrayList只保存StreamReaders,而另一个则只保存StreamWriters),你的代码是否受到“臃肿”的困扰?泛型很容易做到只写一次代码,就可以实现运行每种类型进行工作。

l         泛型会得到非常清晰的代码。去除代码的臃肿,对你的类型强制使用强类型检查,你的代码会更容易阅读和理解。

讨论

在大部分情况,你的代码都是适合使用泛型的。泛型会产生更高的代码重用,更好的性能,强类型检查和易读的代码。

posted @ 2008-01-27 22:54  随风逝去(叶进)  阅读(2852)  评论(12编辑  收藏  举报
Free Web Counter
Free Web Counter