首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用“KeyValuePair of KeyValuePair词典”比使用“T字典”更难吗?

使用“KeyValuePair of KeyValuePair词典”比使用“T字典”更难吗?
EN

Stack Overflow用户
提问于 2014-08-14 06:03:26
回答 1查看 158关注 0票数 0

我需要保留一个颜色/浮动/浮动三位一体的列表和字典。我不是用三个属性(myClass.Color, myClass.FloatValue1, myClass.FloatValue2)定义一个很小的类,而是简单地使用:

代码语言:javascript
复制
List<KeyValuePair<Color, KeyValuePair<float, float>>> myList;
Dictionary<Color,KeyValuePair<float,float>> myDict; 

并访问以下值:

代码语言:javascript
复制
float f = myDict[Color.Red].Key.Key;
float j = myDict[Color.Red].Key.Value;

除了看上去有点奇怪的访问之外,我在这里有什么表现吗?有什么理由相信上面的字典比

代码语言:javascript
复制
Dictionary<Color,myClass> myDict;

还是将上面的列表传递给LINQ查询比List<KeyValuePair<Color,myClass>>性能差?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-14 06:08:42

您应该注意到的唯一不同是,KeyValuePair<TKey, TValue>不是一个类。这是一种结构。这意味着当你把它传递出去时,它的行为会有所不同。也许没关系,但你应该记住这一点。您还应该记住,KeyValuePair<TKey, TValue>是不可变的,所以一旦创建就不能更改它。您可以使用不同的键/值创建新的。

你应该重新考虑你的设计。无论是介绍您自己的简单POCO,还是使用Tuple<T1, T2>,似乎都要比使用KeyValuePair<TKey, TValue>更好,因为您的数据实际上没有任何键值关系。这只是一组你想一起处理的值。Tuple正是为此而设计的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25301065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档