2015-10-08 70 views
0

當我試圖建立下列對象:問題進行初始化新對象

Tijdschrift tijdschrift = new Tijdschrift 
{ 
    Id = "ID01", 
    Titel = "Scientific American", 
    Datum = new DateTime(2014, 8, 1), 
    Uitgeverij = "Scientific American" 
}; 

我收到以下錯誤:

Error CS7036 There is no argument given that corresponds to the required formal parameter 'Id' of 'Tijdschrift.Tijdschrift(string, string, DateTime, string)' Catalogus C:\Users\Robiin\Documents\Labo03\Labo03\Program.cs 13

我不知道爲什麼說實話,我的構造函數寫成如下。

public Tijdschrift(string Id, string titel, DateTime datum, string uitgeverij) 
{ 
    Datum = datum; 
    this.Id = Id; 
    Titel = titel; 
    Uitgeverij = uitgeverij; 
} 
+2

你感到困惑與構造函數的參數和屬性初始化 – Luizgrs

+0

您在使用使用不帶參數的構造函數(換句話說,你是不是調用一個構造函數)對象初始化語法。相反,'新的Tijdschrift(「ID01」,...' – crashmstr

+0

你能展示類'Tijdschrift'的相關部分(我的意思是所涉及的屬性的聲明) – Steve

回答

2

您正在使用object initializer語法。您首先發布的代碼嘗試調用無參數構造函數,然後設置屬性。使用括號()通過構造函數的參數:

Tijdschrift tijdschrift = new Tijdschrift ("ID01", 
    "Scientific American", 
    new DateTime(2014, 8, 1), 
    "Scientific American"); 
+0

好吧,似乎這樣做,我沒有意識到這一點。謝謝你的迴應。 – Actaeonis

0

嘗試調用構造函數這樣來代替:

Tijdschrift tijdschrift = new Tijdschrift ("ID01", 
              "Scientific American", 
              new DateTime(2014, 8, 1), 
              "Scientific American"); 
0

另一種解決問題的方法是添加一個參數的構造函數。然後你的對象初始化工作正常。

public class Tijdschrift { 
    public DateTime Datum {get;set;} 
    public string Id {get;set;} 
    public string Titel {get;set;} 
    public string Uitgeverij {get;set;} 

    public Tijdschrift(){} 

    public Tijdschrift(string Id, string titel, DateTime datum, string uitgeverij) 
    { 
     Datum = datum; 
     this.Id = Id; 
     Titel = titel; 
     Uitgeverij = uitgeverij; 
    } 
}