c#中最简单的表示字符串对列表的方法
本文关键字:列表 方法 字符串 表示 最简单 | 更新日期: 2023-09-27 18:17:26
我想创建几个简短的(有序的)字符串对列表,并在代码中有一个简洁的文字表示。有什么好办法吗?我能想到的最好的就是
using Pairs = System.Collections.Specialized.OrderedDictionary;
...
var z = new Pairs()
{
{ "a", "b" },
{ "c", "d" }
};
但是缺少类型安全有点可怕。似乎没有一个通用的有序字典。
还有哪些类有文字初始化语法?是否可以为类定义自己的初始化语法?
n
-by-2数组允许以下初始化语法:
string[,] z = { { "a", "b" }, { "c", "d" }, { "z", "w" }, };
在这种情况下,尺寸是3 × 2。
如果您更喜欢数组的数组(string[][]
),那么语法就有点笨拙了。有些行可能意外(或故意)具有与其他行不同的长度("锯齿"数组)。在"外部"数组上使用Array.Sort
,使用IComparer<string[]>
或Comparison<string[]>
,可能更容易订购数组的数组。
否则,请使用SortedDictionary<string, string>
或SortedList<string, string>
,如spender
的注释所建议的:
var z = new SortedDictionary<string, string> { { "a", "b" }, { "c", "d" }, { "z", "w" }, };
任何类型,包括用户定义的类型,如果有一个(可访问的、非静态的)Add
方法接受两个字符串,将允许这种类型的集合初始化。例如:
var z = new YourType { { "a", "b" }, { "c", "d" }, { "z", "w" }, };
大致相当于:
YourType z;
{
var temp = new YourType();
temp.Add("a", "b");
temp.Add("c", "d");
temp.Add("z", "w");
z = temp;
}
// use variable z here
使用Tuple
类-它很好地抽象了一对。比如:
new List<Tuple<string, string>>()
{
Tuple.Create("a", "b"),
Tuple.Create("c", "d"),
};
没有通用的OrderedDictionary,但有通用的SortedDictionary
。