Я пытаюсь добавить новый объектный объект в список класса, но сообщает мне, что мне нужна ссылка на объект obj для свойства. Я не могу точно понять, что мне делать, вы можете дать мне совет?

public class CreateContact
{
  logic...
}

public class AddedContacts
{
    private List<CreateContact> Contact;

    public List<CreateContact> ClassCreateContact
    {
        get { return Contact; }
        set { this.Contact = value; }
    }
}

Я хочу создать и добавить в список новый созданный «CreateContact», нажав кнопку.

private void button4_Click(object sender, EventArgs e)
    {

        CreateContact p = new CreateContact(textBox1.Text, textBox2.Text, textBox3.Text, textBox4.Text);
        AddedContacts.ClassCreateContact.add(p); // Error 1 An object reference is required for the non-static field, method, or property

    }
-4
KRUGER88 4 Ноя 2014 в 12:26
 – 
walther
4 Ноя 2014 в 12:28
1
Нет, он пытается получить доступ к свойству экземпляра, как к статическому.
 – 
Dirk
4 Ноя 2014 в 12:29
1
Обе ссылки нерелевантные. Вопрос о том, как получить доступ к члену экземпляра :)
 – 
Sriram Sakthivel
4 Ноя 2014 в 12:29
Вам необходимо создать списки в конструкторе вашего класса AddedContacts!
 – 
TaW
4 Ноя 2014 в 12:30

3 ответа

Лучший ответ

Вам необходимо создать экземпляры списков в конструкторе вашего класса AddedContacts:

public class AddedContacts
{
    private List<CreateContact> Contact;

    public List<CreateContact> ClassCreateContact
    {
        get { return Contact; }
        set { this.Contact = value; }
    }

    public AddedContacts()
    {
        Contact = new List<CreateContact>();
        ClassCreateContact = new List<CreateContact>();
    }

}

Вам также необходимо создать экземпляр AddedContacts для работы, и, наконец, вам нужно посмотреть регистр: это Add не add:

 AddedContacts AC = new AddedContacts();
 AC.ClassCreateContact.Add(p);
0
TaW 4 Ноя 2014 в 12:34
Проблема в том, что у него нет даже экземпляра AddedContacts, поэтому добавление инициализатора поля не поможет.
 – 
Matthew Sainsbury
4 Ноя 2014 в 12:35
Ты быстрее моей копии VS..! ;-)
 – 
TaW
4 Ноя 2014 в 12:37

Вы определили свойство в классе, но свойство будет существовать только тогда, когда существует экземпляр класса. Вам необходимо создать экземпляр через AddedContacts contacts = new AddedContacts(). Тогда контакты будут ссылкой на реальный объект, который содержит список.

Если вы хотите, чтобы сам класс содержал список, объявите свойство как static

0
Matthew Sainsbury 4 Ноя 2014 в 12:29

Если вы не будете использовать сеттер

public class AddedContacts
{
    public readonly List<CreateContact> Contact = new List<CreateContact>();
}

private void button4_Click(object sender, EventArgs e)
{
    CreateContact p = new CreateContact(textBox1.Text, textBox2.Text, textBox3.Text, textBox4.Text);
    AddedContacts ac= new AddedContacts();
    ac.Contact.Add(p);
}
0
serdar 4 Ноя 2014 в 12:42
1
Проблема в том, что у него нет даже экземпляра AddedContacts, поэтому добавление инициализатора поля не поможет.
 – 
Matthew Sainsbury
4 Ноя 2014 в 12:36