我有以下课程:
public class EmailData
{
public string FirstName{ set; get; }
public string LastName { set; get; }
public string Location{ set; get; }
}
Run Code Online (Sandbox Code Playgroud)
然后我做了以下但是没有正常工作:
List<EmailData> lstemail = new List<EmailData>();
lstemail.Add("JOhn","Smith","Los Angeles");
Run Code Online (Sandbox Code Playgroud)
我收到一条消息,说没有方法的重载需要3个参数.
Ree*_*sey 82
您需要添加该类的实例:
lstemail.Add(new EmailData { FirstName = "John", LastName = "Smith", Location = "Los Angeles"});
Run Code Online (Sandbox Code Playgroud)
我建议在你的类中添加一个构造函数,但是:
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; }
}
Run Code Online (Sandbox Code Playgroud)
这将允许您使用构造函数将添加内容写入列表:
lstemail.Add(new EmailData("John", "Smith", "Los Angeles"));
Run Code Online (Sandbox Code Playgroud)
sla*_*dau 74
如果要实例化并添加到同一行,则必须执行以下操作:
lstemail.Add(new EmailData { FirstName = "JOhn", LastName = "Smith", Location = "Los Angeles" });
Run Code Online (Sandbox Code Playgroud)
或者只是事先实例化对象,并将其直接添加到:
EmailData data = new EmailData();
data.FirstName = "JOhn";
data.LastName = "Smith";
data.Location = "Los Angeles"
lstemail.Add(data);
Run Code Online (Sandbox Code Playgroud)
Chr*_*dal 29
您需要新建一个EmailData实例,然后添加:
var data = new EmailData { FirstName = "John", LastName = "Smith", Location = "LA" };
List<EmailData> listemail = new List<EmailData>();
listemail.Add(data);
Run Code Online (Sandbox Code Playgroud)
如果你想做到:
listemail.Add("JOhn","Smith","Los Angeles");
Run Code Online (Sandbox Code Playgroud)
您可以创建自己的自定义列表,通过专门化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);
}
}
Run Code Online (Sandbox Code Playgroud)
The*_*yan 15
一种方式(在一行中)是这样的:
listemail.Add(new EmailData {FirstName = "John", LastName = "Smith", Location = "Los Angeles"});
Run Code Online (Sandbox Code Playgroud)
Geo*_*ett 13
您需要创建要添加的类的实例:
lstemail.Add(new EmailData
{
FirstName = "JOhn",
LastName = "Smith",
Location = "Los Angeles"
});
Run Code Online (Sandbox Code Playgroud)
或者,您可以为EmailData
对象声明构造函数并使用它来创建实例.
您没有在列表中添加该类的新实例.试试这个:
lstemail.Add(new EmailData { FirstName="John", LastName="Smith", Location="Los Angeles" });`
Run Code Online (Sandbox Code Playgroud)
List
是一个通用类.指定a时List<EmailData>
,该Add
方法期望一个类型为的对象EmailData
.以更详细的语法表达的上述示例将是:
EmailData data = new EmailData();
data.FirstName="John";
data.LastName="Smith;
data.Location = "Los Angeles";
lstemail.Add(data);
Run Code Online (Sandbox Code Playgroud)
你正试图打电话
列表<EmailData>.新增(字符串,字符串,字符串).试试这个:
lstemail.add(new EmailData{ FirstName="John", LastName="Smith", Location="Los Angeles"});
Run Code Online (Sandbox Code Playgroud)
您如何期望List<EmailData>.Add
知道如何将三个string
s变成一个实例EmailData
?你期待太多的框架.没有重载List<T>.Add
需要三个字符串参数.事实上,唯一超载的List<T>.Add
是T
.因此,您必须创建一个实例EmailData
并将其传递给List<T>.Add
.这就是上面的代码所做的.
尝试:
lstemail.Add(new EmailData {
FirstName = "JOhn",
LastName = "Smith",
Location = "Los Angeles"
});
Run Code Online (Sandbox Code Playgroud)
这使用C#对象初始化语法.或者,您可以向类中添加构造函数
public EmailData(string firstName, string lastName, string location) {
this.FirstName = firstName;
this.LastName = lastName;
this.Location = location;
}
Run Code Online (Sandbox Code Playgroud)
然后:
lstemail.Add(new EmailData("JOhn", "Smith", "Los Angeles"));
Run Code Online (Sandbox Code Playgroud)
这行是你的问题:
lstemail.Add("JOhn","Smith","Los Angeles");
Run Code Online (Sandbox Code Playgroud)
从3个字符串到您的自定义类没有直接强制转换.编译器无法弄清楚你要用这条线做什么.您需要Add()
该类的实例lstemail
:
lstemail.Add(new EmailData { FirstName = "JOhn", LastName = "Smith", Location = "Los Angeles" });
Run Code Online (Sandbox Code Playgroud)
这是扩展方法版本:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
List<EmailData> myList = new List<EmailData>();
myList.Add("Ron", "Klein", "Israel");
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
236560 次 |
最近记录: |