Подтвердить что ты не робот

Хранение данных в список с классом

У меня есть следующий класс:

public class EmailData
{
    public string FirstName{ set; get; }
    public string LastName { set; get; }
    public string Location{ set; get; }
}

Затем я сделал следующее, но не работал должным образом:

List<EmailData> lstemail = new List<EmailData>(); 
lstemail.Add("JOhn","Smith","Los Angeles");

Я получаю сообщение, в котором говорится, что никакой перегрузки для метода не принимает 3 аргумента.

4b9b3361

Ответ 1

Если вы хотите создать экземпляр и добавить в ту же строку, вам нужно сделать что-то вроде этого:

lstemail.Add(new EmailData { FirstName = "JOhn", LastName = "Smith", Location = "Los Angeles" });

или просто создайте экземпляр объекта ранее и добавьте его непосредственно в:

EmailData data = new EmailData();
data.FirstName = "JOhn";
data.LastName = "Smith";
data.Location = "Los Angeles"

lstemail.Add(data);

Ответ 2

Вам нужно добавить экземпляр класса:

lstemail.Add(new EmailData { FirstName = "John", LastName = "Smith", Location = "Los Angeles"});

Я бы рекомендовал добавить конструктор в ваш класс:

public class EmailData
{
    public EmailData(string firstName, string lastName, string location)
    {
        this.FirstName = firstName;
        this.LastName = lastName;
        this.Location = location;
    }
    public string FirstName{ set; get; }
    public string LastName { set; get; }
    public string Location{ set; get; }
}

Это позволит вам написать дополнение к вашему списку с помощью конструктора:

lstemail.Add(new EmailData("John", "Smith", "Los Angeles"));

Ответ 3

Вам нужно обновить экземпляр EmailData, а затем добавить следующее:

var data = new EmailData { FirstName = "John", LastName = "Smith", Location = "LA" };

List<EmailData> listemail = new List<EmailData>();
listemail.Add(data);

Если вы хотите сделать:

listemail.Add("JOhn","Smith","Los Angeles");

вы можете создать свой собственный список, специализируясь на System.Collections.Generic.List и внедряя свой собственный метод Add, более или менее похожий на это:

public class EmailList : List<EmailData>
{
    public void Add(string firstName, string lastName, string location)
    {
        var data = new EmailData 
                   { 
                       FirstName = firstName, 
                       LastName = lastName,
                       Location = location
                   };
        this.Add(data);
    }
}

Ответ 4

Один способ (в одной строке) сделать это так:

listemail.Add(new EmailData {FirstName = "John", LastName = "Smith", Location = "Los Angeles"});

Ответ 5

Вам нужно создать экземпляр добавляемого класса:

lstemail.Add(new EmailData
                 {
                     FirstName = "JOhn",
                     LastName = "Smith",
                     Location = "Los Angeles"
                 });

См. Практическое руководство. Инициализация объектов с помощью инициализатора объектов (руководство по программированию на С#)


В качестве альтернативы вы можете объявить конструктор для объекта EmailData и использовать его для создания экземпляра.

Ответ 6

Вы не добавляете в список новый экземпляр класса. Попробуйте следующее:

lstemail.Add(new EmailData { FirstName="John", LastName="Smith", Location="Los Angeles" });`

List - общий класс. Когда вы укажете List<EmailData>, метод Add ожидает объект типа EmailData. Приведенный выше пример, выраженный в более подробном синтаксисе, будет выглядеть следующим образом:

EmailData data = new EmailData();
data.FirstName="John";
data.LastName="Smith;
data.Location = "Los Angeles";
lstemail.Add(data);

Ответ 7

Вы пытаетесь вызвать

 Список < EmailData>.Add(строка, строка, строка)
. Попробуйте следующее:
lstemail.add(new EmailData{ FirstName="John", LastName="Smith", Location="Los Angeles"});

Ответ 8

Как вы ожидаете, что List<EmailData>.Add знает, как превратить три string в экземпляр EmailData? Вы ожидаете слишком много из Framework. Нет перегрузки List<T>.Add, который принимает три строковых параметра. Фактически, единственная перегрузка List<T>.Add принимает значение a T. Поэтому вам нужно создать экземпляр EmailData и передать его на List<T>.Add. Это то, что делает вышеуказанный код.

Try:

lstemail.Add(new EmailData {
    FirstName = "JOhn", 
    LastName = "Smith",
    Location = "Los Angeles"
});

В этом случае используется синтаксис инициализации объекта С#. Кроме того, вы можете добавить конструктор в свой класс

public EmailData(string firstName, string lastName, string location) {
    this.FirstName = firstName;
    this.LastName = lastName;
    this.Location = location;
}

Тогда:

lstemail.Add(new EmailData("JOhn", "Smith", "Los Angeles"));

Ответ 9

Эта строка является вашей проблемой:

lstemail.Add("JOhn","Smith","Los Angeles");

В ваш пользовательский класс нет прямой трансляции из 3 строк. Компилятор не может понять, что вы пытаетесь сделать с этой линией. Вам нужно Add() экземпляр класса lstemail:

lstemail.Add(new EmailData { FirstName = "JOhn", LastName = "Smith", Location = "Los Angeles" });

Ответ 10

Здесь версия метода расширения:

public static class ListOfEmailDataExtension
{
    public static void Add(this List<EmailData> list, 
        string firstName, string lastName, string location)
    {
        if (null == list)
            throw new NullReferenceException();

        var emailData = new EmailData
                            {
                                FirstName = firstName, 
                                LastName = lastName, 
                                Location = location
                            };
        list.Add(emailData);
    }
}

Использование:

List<EmailData> myList = new List<EmailData>();
myList.Add("Ron", "Klein", "Israel");

Ответ 11

И если вы хотите создать список с некоторыми элементами, чтобы начать с:

var emailList = new List<EmailData>
{
   new EmailData { FirstName = "John", LastName = "Doe", Location = "Moscow" },
   new EmailData {.......}
};

Ответ 12

  public IEnumerable<CustInfo> SaveCustdata(CustInfo cust)
        {
            try
            {
                var customerinfo = new CustInfo
                {
                    Name = cust.Name,
                    AccountNo = cust.AccountNo,
                    Address = cust.Address
                };
                List<CustInfo> custlist = new List<CustInfo>();
                custlist.Add(customerinfo);
                return custlist;
            }
            catch (Exception)
            {
                return null;
            }
        }

Ответ 13

EmailData clsEmailData = new EmailData();
List<EmailData> lstemail = new List<EmailData>(); 

clsEmailData.FirstName="JOhn";
clsEmailData.LastName ="Smith";
clsEmailData.Location ="Los Angeles"

lstemail.add(clsEmailData);