C#泛型编程指导原则(17--18)

原创 2007年09月14日 19:14:00

Item 17: Avoid Multiple Constraint Ambiguity避免多重约束中的含糊

当使用约束的时候,可以选择对任何一个类型参数使用多重约束。事实上,你可以将单独的类约束与多重接口约束联合使用。当你开始混合并匹配多重约束的时候,可能引入含糊不清的约束。

如:

public interface I

{

void Foo1();

void Foo3();

}

public class C

{

public void Foo1() {}

}

public class TestClass<T> where T : C, I { }

这里接口I和类C中的Foo1产生了混淆。

Item 18: Provide Parameterless Constructors提供无参构造器

无论何时,当你引入自定义类型的时候,都需要考虑当他们被用作类型参数的时候会产生什么样的行为。显然,你选择实现的接口会在该类型如何被约束方面起关键性的作用。至少,准备用为类型参数的每个类型都应该包含对参数构造的支持。通过支持这个约束,使得你的类型可以被任何包含构造约束的泛型类型所支持。

通过支持无参数的构造器来增加你的接口的价值的实例足够多,不过是对于泛型还是非泛型解决方案。如果你曾经和工厂模式的任何一种变形打过交道,你可能已经提供过无参构造器。有了泛型,该条款可以增加价值的场景的列表只会变得更长。

例如:

public IEnumerable<T> GetDataObjects() where T : new() {}

 
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C#高级编程(第三版) 17 18

  • 2007-08-07 17:10
  • 6.45MB
  • 下载

C#类库处理异常指导原则

作为一个类库开发的新手,在面对Exception时,一直不知道所措。阅读了的异常处理部分,记录下一些基本的原则,供日后查询并与大家分享。欢迎高手指点一二。 一、善用finally块  ...
  • kmguo
  • kmguo
  • 2013-11-28 23:54
  • 2408

C#数据结构和算法学习系列二----泛型编程

面向对象编程的问题之一就是所谓“代码膨胀”的特征。为了说明方法参数所有可能的数据类型而需要重载某种方法或重载一套方法集合的时候,就会发生某种类型的代码膨胀。代码膨胀的解决方案之一就是使某个值呈现多种数...

c#泛型编程基础

泛型:通过参数化类型来实现在同一份代码上操作多种数据类型。利用“参数化类型”将类型抽象化,从而实现灵活的复用。 例子代码: class Program     {         static...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)