在C#字典设计一个查找数据结构,但得到的错误

问题描述:

我与C#的工作在Win 7的Visual Studio 2012在C#字典设计一个查找数据结构,但得到的错误

我desinging可存储的一些卡信息的数据结构。

每张卡可能有一个或多个personeName,每个operson可能有一个值。

卡号可能是一万。

我想用字典来实现数据结构。 因为我需要查找卡更新/添加人员和值,我使用字典。

我需要通过从txt文件加载数据来填充字典。

关键是代表一张卡片的字符串,其值是字符串[string []],因为每张卡片都有不同的人物。

因此,字符串[0]将为人1保存一个值,依此类推。而且,每个人可能都有一个存储在字符串[i] [0]中的值。卡片中每个人的价值可以用于分类或其他操作。

但是,C#不允许我implemnt它以这样的方式

Dictionary<string, string[string[]]> myDict = new Dictionary<string, string[string[]]>(); 

任何帮助,将不胜感激。

感谢

+0

尝试词典> myDict。字符串[string []]对我来说没有多大意义。 – user2930100

这将有助于如果你能解释一下“不容许我”,它给你一个错误,什么都该错误告诉你吗?

我认为你可以从不同的设计中受益。您不应该将业务逻辑模型化为您的数据模型。如何填充我将留给你的对象,但看看这种方法。如果要声明Card类这样:

public class Card 
{ 
    public string Name { get; private set; } 

    public IList<string> PersonsHoldingThisCard { get; private set; } 

    public Card(string name) 
    { 
     Name = name; 
     PersonsHoldingThisCard = new List<string>(); 
    } 
} 

您可以存储它的实例在HashSet<Card>,它具有很大的查找速度,这样的例子可以很容易地添加和去除持有该特定卡人的姓名的比较到你的阵列。

如果您的意思是您需要按名称查找卡片,则可以使用Dictionary<string, Card>

我不确定您是要实际使用此方法,还是想要声明Player属性为List<string> CardsInHand,但我认为这取决于您希望程序执行的操作。

您的语法不正确。尝试:

Dictionary<string, string[][]> myDict = new Dictionary<string, string[][]>(); 

但是,如果大多数卡都包含相同的信息,您可能希望为卡本身使用类而不是字符串数组。这使得你的代码更具可读性,并且如果你有任何特定的卡片方法,你可以将它们包含在该对象中(称为封装)。

如果您正在向卡中添加或删除字段,则阵列效率也会很低,因为它们的大小也是固定的。考虑一个Collection<string>List<string>

或者,如果卡将有不同的信息,或者很多领域,有字典的解释,例如:

Dictionary<string, Dictionary<string, string>> myDict = 
    new Dictionary<string, IDictionary<string, string>>();