次のクラスがあります。
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つの引数を取ることを示すメッセージが表示されます。
同じ行にインスタンス化して追加する場合は、次のような操作を行う必要があります。
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);
クラスのインスタンスを追加する必要があります。
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"));
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);
}
}
これを行う1つの方法(1行で)は次のようになります。
listemail.Add(new EmailData {FirstName = "John", LastName = "Smith", Location = "Los Angeles"});
追加するクラスのインスタンスを作成する必要があります。
lstemail.Add(new EmailData
{
FirstName = "JOhn",
LastName = "Smith",
Location = "Los Angeles"
});
方法:オブジェクト初期化子を使用してオブジェクトを初期化する(C#プログラミングガイド) を参照してください
または、EmailData
オブジェクトのコンストラクタを宣言し、それを使用してインスタンスを作成できます。
クラスの新しいインスタンスをリストに追加するわけではありません。これを試して:
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);
電話をかけようとしています
List <EmailData> .Add(string、string、string)
lstemail.add(new EmailData{ FirstName="John", LastName="Smith", Location="Los Angeles"});
拡張メソッドのバージョンは次のとおりです。
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");
List<EmailData>.Add
が3つのstring
sをEmailData
のインスタンスに変換する方法をどのように知ると期待しますか?あなたはフレームワークの多くを期待しています。 3つの文字列パラメーターを受け取るList<T>.Add
のオーバーロードはありません。実際、List<T>.Add
の唯一のオーバーロードはT
を受け取ります。したがって、EmailData
のインスタンスを作成し、List<T>.Add
に渡す必要があります。それが上記のコードが行うことです。
試してください:
lstemail.Add(new EmailData {
FirstName = "JOhn",
LastName = "Smith",
Location = "Los Angeles"
});
これは、C#オブジェクトの初期化構文を使用します。あるいは、コンストラクタをクラスに追加できます
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"));
この行はあなたの問題です:
lstemail.Add("JOhn","Smith","Los Angeles");
3つの文字列からカスタムクラスへの直接キャストはありません。コンパイラには、この行で何をしようとしているかを把握する方法がありません。 Add()
クラスのインスタンスをlstemail
にする必要があります。
lstemail.Add(new EmailData { FirstName = "JOhn", LastName = "Smith", Location = "Los Angeles" });
開始するいくつかの要素を含むリストを作成する場合:
var emailList = new List<EmailData>
{
new EmailData { FirstName = "John", LastName = "Doe", Location = "Moscow" },
new EmailData {.......}
};
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;
}
}
EmailData clsEmailData = new EmailData();
List<EmailData> lstemail = new List<EmailData>();
clsEmailData.FirstName="JOhn";
clsEmailData.LastName ="Smith";
clsEmailData.Location ="Los Angeles"
lstemail.add(clsEmailData);