将您的域对象用作词典中的键是一种好的做法吗?使用对象作为词典中的键
我有一个场景,我使用NHibernate
填充我的域对象。
对于执行业务逻辑,我需要查找字典。我可以利用 无论
IDictionary<int, ValueFortheObject>
或
Dictionary<DomainObject, ValueFortheObject>
第二个选择似乎更把我当成
我可以写容易测试用例,并可以使用真正的域对象测试用例,而不是使用
Mock<DomainObject>
(如果我选择第一个选项),因为Id
上的setter对所有域对象都是private
。的代码更易读为
Dictionary<Hobbit,List<Adventures>>
更具有可读性对我来说比Dictionary<int,List<Adventures>>
与意见建议INT为hobbitId
尤其是路过的时候作为参数
我的问题是:
第二种方法使用第一种方法的优点是什么(我可能会盲目失踪)?
使用第二种方法会出现任何性能问题吗?
更新01:
我的域模型实现这些并同时进行操作,他们没有得到突变。
使用它们作为密钥的性能会有问题吗?或者我在这里完全忽略了这一点,性能/内存与正在使用的密钥无关?
更新02:
我的问题是
- 会有与性能或内存中的任何问题,如果我使用对象作为键,而不是原始类型和为什么/如何?
你是否熟悉Dictionary ..?它利用键/值对..也不应该允许重复的键..你有没有想过哈希表例如..你的词典>看起来更可读,但没有看到任何真正的代码,很难确定它是什么你正试图完全按照我的意见 –
MethodMan
你能提供一个例子,你想如何具体使用字典? – CSharpie
我用一种快速和肮脏的方法来计算数组中出现次数的方法,它使用来自另一种方法的索引 – aremvee