如何正确制作对象列表的列表(主要),以便将项目添加到列表时,不会将其添加到列表(主要)中的所有列表?

我有这个:

public sealed class RepositoryContacts
{
     public List<List<Template>> Contacts = new List<List<Template>>();

     public List<Template> PersonalContacts = new List<Template>();
     public static RepositoryContactacts Instancia = new RepositoryContactacts();
     private RepositoryContacts() { }
}

假设我在联系人中添加了两个列表,如下所示:

PlantillaContactos contact = new PlantillaContactos 
{
    Name= "",LastName= "",Address= "",};
RepositoryContacts.Instancia.PersonalContacts.Add(contact);
            
RepositoryContacts.Instancia.Contacts.Add(RepositoryContacts.Instancia.PersonalContacts);
RepositoryContacts.Instancia.PersonalContacts.Clear();
RepositoryContacts.Instancia.Contacts[RepositoryContacts.Instancia.Contacts.Count - 1].Clear();

到目前为止一切都很好,最后两行是清理列表的内容,因为它是在联系人中初始化的。现在,当我真的想将一个项目添加到列表中时,它们会添加到它内部的所有列表中。这就是我所做的:

public void Add(string name,string lastname,string address) 
{
    PlantillaContactos contacto = new PlantillaContactos 
    {
        Name= name,LastName= lastname,Address= address,};
    RepositoryContacts.Instancia.PersonalContacts.Add(contacto);
    RepositoryContacts.Instancia.Contactos[index] = RepositoryContacts.Instancia.PersonalContacts;
}

变量“index”的值会根据您想要获取的列表而有所不同(我已经测试过了)。

注意:我将为您的下一次连载创建所有这些。

a409788679 回答:如何正确制作对象列表的列表(主要),以便将项目添加到列表时,不会将其添加到列表(主要)中的所有列表?

您使用了单例模式设计并将其更改为仅一个示例

RepositoryContacts 更改为:

public sealed class RepositoryContacts
{
    public List<List<Template>> Contacts = new List<List<Template>>();
    public List<Template> PersonalContacts = new List<Template>();
    
    private static RepositoryContactacts instancia = null;
    private RepositoryContacts() { }
    public static RepositoryContactacts Instancia
    {
        get
        {
            if (instancia == null)
            {
               instancia = new RepositoryContactacts();
            }
            return instancia;
        }
    }
}
本文链接:https://www.f2er.com/35507.html

大家都在问