C#泛型编程指导原则(二)

原创 2007年09月14日 13:28:00

Item 2: Replace Objects with Type Parameters使用类型参数取代Object类型

在使用泛型之前,程序员一般都依赖于Object类型来获得通用性。如果有这样一个类或者方法:共性的功能,会被应用到不同的类型上,你将由很少的选择来处理。如果没有一个共同的基类或者接口,仅有的方法就是使用通用的类型Object

如:

public object SendMsg(object sender, object param) {}

当然,这样做是以牺牲类型安全为代价来换取的通用性。

泛型为解决这种类型安全问题引入了一个完美的解决方法,通过使用泛型,可以在类型安全和通用性之间得到平衡。

上面的方法可以改成如下的模式:

public K SendMsg<I, J, K>(I sender, J param) {}

这里来自经验的最基本的规则就是:在代码中应该尽量不使用Object类型,当遇到Object类型时,都应该先问问自己:泛型能否用在这里来减少对Object的依赖。

 

C#泛型编程指导原则(19--23)

Item 19: Use Static Data Members with Caution小心使用静态数据成员对于非泛型类来说,静态数据成员被所有该类的对象所共享。然而,对于泛型类型,静态数据成员是被...
  • MaybeHelios
  • MaybeHelios
  • 2007年09月14日 19:15
  • 1328

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

Item 17: Avoid Multiple Constraint Ambiguity避免多重约束中的含糊当使用约束的时候,可以选择对任何一个类型参数使用多重约束。事实上,你可以将单独的类约束与多重...
  • MaybeHelios
  • MaybeHelios
  • 2007年09月14日 19:14
  • 859

C#泛型编程指导原则(一)

Item1:Use  Generic Collections 使用泛型集合数据集合是泛型最典型的应用之一。在你现存的代码里,可能已经遍布了ArrayList和HashTable。在使用泛型之前,你可能...
  • MaybeHelios
  • MaybeHelios
  • 2007年09月14日 13:27
  • 1007

C#泛型编程指导原则(五)

Item 5: Genericize Types That Vary Only by a Data Type将由数据类型引起变化的类型泛型化如果你通读以下自己代码中现存的类、方法、接口、委托,你会发现...
  • MaybeHelios
  • MaybeHelios
  • 2007年09月14日 13:53
  • 744

C#泛型编程指导原则(15--16)

Item 15: Select the Least Restrictive Constraints选择最少限制的约束在给类型参数选择约束条件的时候,最好只加入最少的限制,不要加入不必要的附加限制。下面...
  • MaybeHelios
  • MaybeHelios
  • 2007年09月14日 19:13
  • 660

C#泛型编程指导原则(12--14)

Item 12: Custom Collections Should Extend Collection自定义集合应当扩展自Collection在一些时候,你很希望引入自己定义的泛型集合。典型来讲,自...
  • MaybeHelios
  • MaybeHelios
  • 2007年09月14日 19:11
  • 678

C#泛型编程指导原则(六、七)

Item 6: Use Expressive, Consistent Type Parameter Names使用富有表现力的、前后一致的类型参数名称对于该问题,有两大基本阵营。一方认为“单个字母”的...
  • MaybeHelios
  • MaybeHelios
  • 2007年09月14日 14:06
  • 566

C#泛型编程指导原则(三、四)

Item 3: Replace System.Type with Type Parameters用类型参数取代System.Type在一些情况下,你可能在方法的签名中使用过System.Type引用,...
  • MaybeHelios
  • MaybeHelios
  • 2007年09月14日 13:30
  • 579

C#泛型编程指导原则(十、十一)

Item 10: Prefer Type Inference with Generic Methods优先使用泛型方法的类型推测泛型方法的最帅的特性就是推测参数类型的能力,该特性可以消除为每个对泛型方...
  • MaybeHelios
  • MaybeHelios
  • 2007年09月14日 19:10
  • 580

矛盾律、排中律和二值原则

矛盾律:保证思维的一致性;
  • lanchunhui
  • lanchunhui
  • 2016年10月20日 18:18
  • 395
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#泛型编程指导原则(二)
举报原因:
原因补充:

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