正在创建词典<;字符串,字典<;T、 T[]>;[]>;
本文关键字:lt gt 字典 字符串 创建 | 更新日期: 2023-09-27 17:51:05
在C#中,实例化和初始化包含字典数组作为值的字典的语法是什么,这些字典本身包含数组作为值?
例如,(我相信(
Dictionary<string, Dictionary<string, string[]>[]>?
下面是我尝试做的一个例子:
private static readonly Dictionary<string, Dictionary<string, DirectoryInfo[]>[]> OrderTypeToFulfillmentDict = new Dictionary<string, Dictionary<string, DirectoryInfo[]>>()
{
{"Type1", new []
{
ProductsInfo.Type1FulfillmentNoSurfacesLocations,
ProductsInfo.Type2FulfillmentSurfacesLocations
}
}
}
其中类型1完成。。。,和Type2实现。。。已经构建为
Dictionary<string, DirectoryInfo[]>.
这会引发以下编译器错误:
"Cannot convert from System.Collections.Generic.Dictionary<string, System.IO.DirectoryInfo[]>[] to System.Collections.Generic.Dictionary<string, System.IO.DirectoryInfo[]>"
编辑:正如Lanorkin所指出的,问题是我在新的Dictionary<string, Dictionary<string, DirectoryInfo[]>>()
中错过了最后一个[]
。尽管如此,不用说,这可能不是任何人都应该首先尝试做的事情。
您所得到的看起来是正确的,但您所做的有一种真实的代码气味,这将导致一些严重的技术债务。
对于初学者来说,与其在一个类中使用适合于您尝试建模的方法来对其进行内部Dictionary<string, string[]>
建模,不如将其建模。否则,任何访问这种类型的人都不会知道它真正在建模什么。
类似这样的东西:
var dic = new Dictionary<string, Dictionary<int, int[]>[]>
{
{
"key1",
new[]
{
new Dictionary<int, int[]>
{
{1, new[] {1, 2, 3, 4}}
}
}}
};
Dictionary<string, Dictionary<string, string[]>[]> complexDictionary = new Dictionary<string, Dictionary<string, string[]>[]>();
或者使用var
关键字:
var complexDictionary = new Dictionary<string, Dictionary<string, string[]>[]>();
以下是完全有效的
// array of dictionary
Dictionary<int, string[]>[] matrix = new Dictionary<int, string[]>[4];
//Dictionary of string and dictionary array
Dictionary<string, Dictionary<string, string[]>[]> dicOfArrays= new Dictionary<string, Dictionary<string, string[]>[]>();
private static readonly Dictionary<string, Dictionary<string, DirectoryInfo[]>>
OrderTypeToFulfillmentDict = new Dictionary<string, Dictionary<string, DirectoryInfo[]>>()
{
{"Type1", new []
{
ProductsInfo.Type1FulfillmentNoSurfacesLocations,
ProductsInfo.Type2FulfillmentSurfacesLocations
}
}
}
变量定义中的类型错误。删除最后一个"[]",因为您不需要字典数组。