2013-03-22 93 views
-3

我已經經歷了一些相關的其他職位的閱讀,但我不相信我,他們做了同樣的問題。我相信我正在爲我的繼承類正確地構造我的構造函數,但它仍然無法工作 - 甚至不會承認我有一個構造函數。C#傳承問題 - 不包含一個構造函數參數0

class BlockedNumber : PhoneNumber 
{ 
    public BlockedNumber(string a, string m, string l) 
     : base(a, m, l) { } 
} 

這仍然讓我在標題中錯誤:

"DTS.PhoneNumber does not contain a constructor that takes 0 arguments.

我不知道爲什麼它沒有正確認識我的構造函數。錯誤(VS12中的藍色下劃線)在之後第一次使用BlockedNumber

沒有人有任何想法,爲什麼不這樣呢?

+1

什麼是你所創建的'BlockedNumber'對象的代碼 -

它在這個崗位解釋? – MyCodeSucks 2013-03-22 21:31:34

+0

所以你得到一個編譯錯誤,或「幻影設計師錯誤」?有時VS使用舊文件自動完成它,這是罕見的,但確實發生了,所以嘗試重建,看看問題是否仍然存在... – theMayer 2013-03-22 21:36:20

+0

你的意思是嘗試做一個'Clean'然後'Rebuild'不要你。 。 – MethodMan 2013-03-22 21:37:12

回答

-1

以你所擁有的,並生成一個類從VS2010

internal class PhoneNumber 
    { 
     private string a; 
     private string m; 
     private string l; 

     public PhoneNumber(string a, string m, string l) 
     { 
      // TODO: Complete member initialization 
      this.a = a; 
      this.m = m; 
      this.l = l; 
     } 
    } 

class BlockedNumber : PhoneNumber 
{ 
    public BlockedNumber(string a, string m, string l) 
     : base(a, m, l) { } 
} 

This code compiles just fine so just like Yuriy stated the issue must be somewhere else.

2

下編譯

class BlockedNumber : PhoneNumber 
{ 
    public BlockedNumber(string a, string m, string l) 
     : base(a, m, l) { } 
} 

internal class PhoneNumber 
{ 
    public PhoneNumber(string a, string m, string l) { } 
} 

你的問題是在其他地方。最有可能的是你在其他地方實例化一個PhoneNumber 0參數。

0

最有可能你的子類有另一個參數的構造函數,你不露,但構造不叫基類構造函數以明確的方式。因此,你認爲它不相關。但是,C#向每個構造函數插入一個基類構造函數調用,因爲這在CIL中是必需的。因此,另一個構造函數會抱怨它無法找到要調用的基類構造函數。

相關問題