2012-07-24 70 views
0

在VS C#Express中,我得到運行下面的代碼時,這個錯誤(在類中添加一個即使):C#VS錯誤:類不包含構造

'myComponent.SettingsComponentAttributes' does not contain a constructor that takes 1 arguments.

我曾嘗試加入構造函數的類本身,而是應用到新的構造相同的消息:

public override void CreateAttributes() 
{ 
    m_attributes = new SettingsComponentAttributes(this); 
} 

public SettingsComponentAttributes(SettingsComponentAttributes obj) 
{ 
} 
+8

您必須創建一個帶有1個參數的構造函數。 – CodeCaster 2012-07-24 09:42:35

回答

7

你的類不聲明任何構造函數,因此它等同於具有單參構造函數:

public SettingsComponentAttributes() 
{ 
} 

你試圖傳遞一個參數(this)到構造 - 它不會WOR ķ。你需要改變你的構造函數調用,或者聲明一個合適的構造函數。

你應該仔細看看錯誤消息,並找出你爲什麼需要在堆棧溢出問。哪條消息不清楚?修改C#知識的這一方面。瞭解錯誤信息是成爲一個優秀的開發非常重要的一部分,而這一次是相當清楚的:

  • 你試圖使用一個構造函數參數1
  • 沒有這樣的構造存在
+0

非常感謝你,是的,我確實需要回到基本面,只是觀看了關於構造函數的這個豐富的[視頻](http://www.youtube.com/watch?v=Waq_xVXNJCQ)。開始把握這個想法。 – 2012-07-24 10:19:41

4

默認構造函數參數的,所以如果你想創建它接受你有一個參數自行創建

構造

像這樣

public class SettingsComponentAttributes : GH_ComponentAttributes 
{ 
    public override void CreateAttributes() 
    { 
     m_attributes = new SettingsComponentAttributes(this); 
    } 

    public SettingsComponentAttributes(SettingsComponentAttributes obj) 
    { 
     // Do your fancy work here 
    } 
} 
1

你需要創建一個類的構造函數1個arguement,如:

public SettingsComponentAttributes(SettingsComponentAttributes other) 
    { 
     // Initialise. 
    } 
+1

這是一個沒有*任何*參數的構造函數,並且由於'Public'和'Class'也不會編譯... – 2012-07-24 09:44:30

+1

哎呀,應該徹底讀懂這個問題。 – dtsg 2012-07-24 09:47:33

+1

這不是一個徹底閱讀*問題*的問題 - 答案中的*文本*已經是正確的,但您的示例代碼與文本不匹配。 – 2012-07-24 10:06:16

0

您還沒有一個構造函數需要1個參數

public SettingsComponentAttributes(int i)