在.NET中存储字符串对,制作对象或使用类的最佳方法是什么?

Vid*_*dar 23 c# string collections .net-2.0

不知道我是否有"厚厚的一天" - 但我只是想知道这里最好的路线是什么.

语境:

我有一个字段列表,我想用它们存储别名(我使用的是.NET 2.0 BTW),例如

在此输入图像描述

所以它本质上是一对字符串:

参考,参考

社区,社区

邮编:POST_CODE

...而且我认为为这样的事情继续创建对象似乎太过分了,所以我应该创建一个StringDictionary并以这种方式存储值,即使我不使用StringDictionary类的任何功能我并不担心键值对关联等问题 - 我只是想保留一对字符串.

任何帮助/指针都会很棒.

Bli*_*ndy 42

.NET的"pair"泛型类是Tuple.您会像以下一样使用它:

var strings=new List<Tuple<string, string>>();
strings.Add(Tuple.Create("REFERENCE", "Ref"));
Run Code Online (Sandbox Code Playgroud)

如果最左边的字符串是唯一的(即键),则字典是完全可接受的替代.否则你会得到错误.

至于使用内置集合或创建实际对象是否更好,取决于您的需求(您将在以后添加更多列吗?您不能使用字典方法执行此操作),您使用它的频率(如果它是一个核心类型,你应该为它创建一个域模型)等.

编辑:至于不使用任何字典内置功能,情况并非如此:您正在使用其二进制搜索算法和内部树构造进行快速查看.一个Tuple或哪个类型的列表很可能不会有这个,它将恢复为线性搜索.


And*_*son 14

System.Tuple怎么样?


Nei*_*ick 10

Dictionary<string, string>如果"字段名称"是唯一的,则可以使用通用名称.

否则,如果您不介意重复键,则可以使用Lookup类.

我不会过分担心你是否使用这些类的全部功能.我认为更重要的问题应该是编写简单,易于阅读和维护的代码.


Car*_*ten 5

怎么样Tuple<string,string>?它构建成.net 4.0并且它是轻量级的.


小智 5

在我看来,最好使用自定义结构来存储两个字符串,因为:System.Collections.Generic.Dictionary并且System.Collections.Specialized.NameValueCollection需要Add将字符串添加到其中的方法- 这是额外的代码行。该类System.Tuple只有 ReadOnly 属性——这可能是一个障碍。

简单结构示例:

public struct DoppelWert
{
 public string Wert1; 
 public string Wert2;
}
Run Code Online (Sandbox Code Playgroud)