gpt4 book ai didi

c# - 如何制作包含主要项目的列表

转载 作者:太空宇宙 更新时间:2023-11-03 20:22:02 24 4
gpt4 key购买 nike

我需要一个具有可共享行为的项目列表。

例子:

Person class

List<PhoneNumber>只有一个 PhoneNumberbool IsPrimary其他元素也一样有List<EmailAddress>List<Address>

假设每个项目( PhoneNumberEmailAddressAddress )共享同一个界面 ICanBePrimary其中包含一个属性的要求bool IsPrimary当在 List<ICanBePrimary> 中时列表中只有一项可以具有 IsPrimary 的真实值.

最佳答案

最干净的方法是将列表隐藏在一个类后面,该类允许您枚举内容,并提供其他方法来识别主要项目:

class AddressList : List<Address> {
private int indexOfPrimaryAddress = 0;
public Address PrimaryAddress {
get {
return this[indexOfPrimaryAddress];
}
set {
indexOfPrimaryAddress = this.IndexOf(value);
}
}
// Override more methods to make sure that the index does not become "hanging"
}

一个更简洁的实现会将列表封装在您的 AddressList 类中,并仅公开您想要公开的方法:

class AddressList : IList<Address> {
private int indexOfPrimaryAddress = 0;
private readonly IList<Address> actualList = new List<Address>();
// Implement the List<Address> by forwarding calls to actualList
}

关于c# - 如何制作包含主要项目的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12941214/

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