动态与词典[C#]

Yel*_*ika 4 c# dynamic

假设我有一个叫做的类Composite,它包含另一个类的集合Component,所有这些类都有一个属性Name.使用a Dictionary来存储组件会更好吗,或者使用动态对象会更好吗?

例如,这样做会更好:
Component component = someComposite.Components["RandomComponent"];
或者:
Component component = someComposite.Components.RandomComponent;

其中someComposite.Components dynamic在第二个例子中.

第二种情况似乎更好,但没有类型安全......

我想补充一点,在某些时候我最终会这样做:
DerivedComponent component = someComposite.Components["RandomComponent"] as DerivedComponent;
在这种情况下dynamic可以节省我输入转换.

那么哪个更好的设计呢?

dtb*_*dtb 7

也许这只是我,但我认为dynamic更多是处理COM互操作和与IronPython等动态语言交互的便捷方式.dynamic不应该真正用于全C#程序.

使用Dictionary <string,Component>.

并查看System.ComponentModel(即IContainerIComponent接口).

  • 那么为什么我不应该使用动态?你给我的信息在哪里使用它,但不是为什么不在其他地方使用它... (3认同)