正在创建词典<;字符串,字典<;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[]>>()中错过了最后一个[]。尽管如此,不用说,这可能不是任何人都应该首先尝试做的事情。

正在创建词典<;字符串,字典<;T、 T[]>;[]>;

您所得到的看起来是正确的,但您所做的有一种真实的代码气味,这将导致一些严重的技术债务。

对于初学者来说,与其在一个类中使用适合于您尝试建模的方法来对其进行内部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 
            } 
    }
}

变量定义中的类型错误。删除最后一个"[]",因为您不需要字典数组。