簡體   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