Saya punya pertanyaan objek csharp dasar. Saya ingin menambahkan email saya ke daftar dan menampilkan kontennya.

Saya telah membuat kelas objek saya:

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

Lalu saya ingin membuat daftar dan mulai membuat objek untuk ditambahkan dan ditampilkan.

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

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

Namun, saya mendapatkan kesalahan ini:

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

Saya juga mencoba melakukan ini

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

Tapi keluar saya hanya Email

Apa yang saya lakukan salah?

0
Greg 7 Januari 2021, 15:51

2 jawaban

Satu-satunya konstruktor Anda memiliki 2 parameter sehingga kesalahan merujuk ke Email.Email(string, string) saat Anda mencoba membuat instance Email dengan parameter nol.

Anda harus menghapus konstruktor dari kode Anda dan menggunakan penginisialisasi properti seperti yang sudah Anda lakukan. Ini berfungsi karena kompiler akan membuat konstruktor default tanpa adanya konstruktor lain.

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

Atau tinggalkan konstruktor dan buat instance seperti ini.

new Email("MySubject", "MyContent"}

Pilih satu, itu membuat sedikit perbedaan.

1
phuzi 7 Januari 2021, 13:00

Anda dapat menghapus konstruktor itu dengan dua argumen dan melakukan inisialisasi objek ini.

List<Email> Emails = new List<Email>();
Emails.Add(new Emails{ EmailSubject = "Something", EmailContent = "Also Something"});
1
Andrei Solero 7 Januari 2021, 13:04