所以我必须设计一个适用于配对对象集合的类.对象之间存在一对一的映射.我希望类的客户端在使用我的类之前已经建立了这个映射.
我的问题是,让我的班级用户给我这些信息的最佳方法是什么?
要问这样的一对对吗?
MyClass(IEnumerable<KeyValuePair<Object, Object>> objects)
Run Code Online (Sandbox Code Playgroud)
或者像这样分开收藏?
MyClass(IEnumberable<Object> x, IEnumerable<Object> y)
Run Code Online (Sandbox Code Playgroud)
还是有其他选择吗?
我喜欢第一个,因为这种关系是明确的,我不喜欢它,因为它给客户带来了额外的工作.
我喜欢第二种,因为类型更原始,需要更少的工作,我不喜欢它,因为映射不明确.我必须假设订单是正确的.
意见好吗?
如果您有权访问它,请使用Tuple<T, R>.如果不这样做,只需编写自己的通用Tuple或Pair类.我会避免使用KeyValuePair,只是因为它冗长而且与之有关联Dictionary.
我更喜欢你提到的两个KeyValuePair,因为它更具表现力并保持对象之间的关系.
但我宁愿创建一个包含对你的对的引用的类.在我看来,这更具可读性,创建一个额外的类或结构来表达你的实际行为永远不会受到伤害.
(伪代码)
class MyPair
{
public TypeA One;
public TypeB Two;
}
MyClass(IEnumerable<MyPair> objects)
Run Code Online (Sandbox Code Playgroud)
Tuple<,>在一些答案中提到了,它与KeyValuePair一样可读,但更灵活,因为它可以包含两个以上的参数.
[编辑 - 在晚安睡觉后更加深入了解元组/课程]
| 归档时间: |
|
| 查看次数: |
395 次 |
| 最近记录: |