gpt4 book ai didi

c# - 使用成员变量代替 C# 中的索引访问类数组的项

转载 作者:行者123 更新时间:2023-11-30 12:14:23 26 4
gpt4 key购买 nike

假设我有一个类

class ABC
{
int ID;
public string Name;
public ABC(int i, string str) { ID = i; Name = str; }
}

并声明一个类 ABC 的数组。假设我还使用 new 关键字初始化了每个元素。现在我想使用它的成员 ID 而不是基于 0 的索引来访问类的元素。如果需要,请公开 ID。

public partial class _Default : System.Web.UI.Page 
{
protected void Page_Load(object sender, EventArgs e)
{
ABC[] a = new ABC[3];
a[0] = new ABC(100, "First");
a[1] = new ABC(101, "Second");
a[2] = new ABC(102, "Third");

ABC newobj = a[100]; // where 100 is ID of class ABC
}
}

class ABC
{
int ID;
string Name;
public ABC(int i, string str)
{
ID = i;
Name = str;
}
}

最佳答案

您可以使用 LINQ获取正确的对象:

ABC newobj = a.Where(abc => abc.ID == 100).FirstOrDefault();

返回 null如果没有匹配的 ID。

正如@Xanatos 所建议的,您还可以使用这个更整洁的版本:

ABC newobj = a.FirstOrDefault(abc => abc.ID == 100);

正如@Jon 所建议的,使用 Dictionary<int, ABC> 可能会更好存储您的 ABC 实例。它提供了比总是迭代 Collection 更好的性能。找到匹配的 ID。但是 key 必须是唯一的,你不能添加两个 ABC具有相同 ID 的实例:

var a = new Dictionary<int, ABC>();
a.Add(100, new ABC(100, "First"));
a.Add(101, new ABC(101, "Second"));
a.Add(102, new ABC(102, "Third"));

您将以这种方式访问​​它:

ABC newobj = a[100];

关于c# - 使用成员变量代替 C# 中的索引访问类数组的项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9681828/

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