繁体   English   中英

C# 创建一个 object 并添加到列表中

[英]C# Create an object and add to a list

我有一个基本的 csharp 对象问题。 我想将我的电子邮件添加到列表中并显示其内容。

我已经创建了我的 object class:

 public class Email{
        public string EmailSubject {get; set;} 
        public string EmailContent {get; set;}
        public Email(String Subject, String Content)
        {
            EmailSubject = Subject;
            EmailContent = Content;
        }
    

然后我想创建一个列表并开始制作 object 以添加到它们并显示。

    List<Email> Emails = new List<Email>();
    Emails.Add(new Email() {EmailSubject="MySubject", EmailContent="MyContent"} );

    Console.WriteLine();
    foreach (Email e in Emails)
    {
     Console.WriteLine(e);
    }

但是,我收到此错误:

There is no argument given that corresponds to the required formal parameter 'Subject' of 'Email.Email(string, string)' 

我也尝试过这样做

Emails.Add(new Email(EmailSubject="MySubject", EmailContent="MyContent" ));

但我的输出只是Email

我究竟做错了什么?

您正在尝试在 new new Email() 中调用无参数构造函数,但未指定

你可以添加

public Email(){}

或使用现有的

new Email("Subject","Content")

对于打印,您需要覆盖并调用方法 e.ToString()

将方法添加到 Email class

public override string ToString()
{
     return $"Subject-{EmailSubject} Content-{EmailContent};
}

然后在foreach

Console.WriteLine(e.ToString());

您唯一的构造函数有 2 个参数,因此当您尝试使用零参数实例化Email时,错误指的是Email.Email(string, string)

您应该从代码中删除构造函数并像您已经做的那样使用属性初始化器。 这是因为编译器将在没有任何其他构造函数的情况下创建一个默认构造函数。

new Email() {
    EmailSubject="MySubject",
    EmailContent="MyContent"
}

或者离开构造函数并创建一个这样的实例。

new Email("MySubject", "MyContent"}

选一个,差别不大。

您可以使用两个 arguments 删除该构造函数并执行此 object 初始化。

List<Email> Emails = new List<Email>();
Emails.Add(new Emails{ EmailSubject = "Something", EmailContent = "Also Something"});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM