我想让大量的类实例返回相同的相似数据字段,就像在这个示例实现中一样:
foreach (SomeClass sc in SomeClasses)
{
System.Console.WriteLine(sc.GetData("1st field"));
System.Console.WriteLine(sc.GetData("Another field"));
System.Console.WriteLine(sc.GetData("and another"));
}
// ---- inside SomeClass:
Dictionary<string, string> myData;
public string GetData(string field)
{
return myData[field];
}
我不喜欢的是必须在示例中一遍又一遍地进行的字符串散列、查找和匹配(我假设这就是 Dictionary 的工作原理)。我真的很想找到一个更好的方法。
来自C世界,我想到为所有字段分配一个唯一的整数键,这样我就可以变成数组查找:
// ---- inside SomeClass:
string[] MyData;
public string GetData(int field_key)
{
return MyData[field_key];
}
现在字段查找是高效的,但在这些“数组是邪恶的”时代感觉不对,而且处理 field_key 整数是乏味且容易出错的。
我不知道我是否在这里追逐性能幽灵,只是我想找到一种既高效又干净的设计。
建议?
最佳答案
你为什么不想查字典?字典的一种非常有效的实现方式是对数组中的散列进行索引查找。因此,底层实现可以归结为第二个示例中的代码。这将使它成为 O(1)
使用字典
关于C# 非邪恶的快速数组查找?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6637542/