gpt4 book ai didi

c# - 如何向数组添加关联索引。 C#

转载 作者:太空宇宙 更新时间:2023-11-03 18:46:23 25 4
gpt4 key购买 nike

我有一组自定义对象。我希望能够通过特定数据成员引用此数组,例如 myArrary["Item1"]

“Item1”实际上是存储在这个自定义类型的 Name 属性中的值,我可以编写一个谓词来标记适当的数组项。但是我不清楚如何让数组知道我想使用这个谓词来查找数组项。

我只想为这个数组使用字典或哈希表或 NameValuePair,并解决整个问题,但它已生成并且必须保持为 CustomObj[]。我还试图避免从这个数组中加载字典,因为它会发生很多次并且其中可能有很多对象。

澄清

myArray[5] = new CustomObj() // easy!
myArray["ItemName"] = new CustomObj(); // how to do this?

以上能做到吗?我真的只是在寻找类似于 DataRow.Columns["MyColumnName"] 工作方式的东西

感谢您的建议。

最佳答案

您真正想要的是 OrderedDictionary. .NET 在 System.Collections.Specialized 中提供的版本不是通用的 - 但是有一个 generic version on CodeProject你可以使用。在内部,这实际上只是一个与列表结合的哈希表……但它以统一的方式公开。

如果您真的想避免使用字典 - 您将不得不忍受 O(n) 的按键查找性能。在这种情况下,请坚持使用数组或列表,只需使用 LINQ Where() 方法来查找值。您可以使用 First()Single(),具体取决于是否需要重复条目。

var myArrayOfCustom = ...
var item = myArrayOfCustom.Where( x => x.Name = "yourSearchValue" ).First();

将此功能包装到一个类中非常容易,这样外部消费者就不会被这些知识所累,并且可以使用简单的索引器来访问数据。然后您可以添加类似 memoization 的功能如果您希望经常访问相同的值。通过这种方式,您可以分摊通过多次访问构建底层查找字典的成本。

关于c# - 如何向数组添加关联索引。 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4128090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com