天天看點

C# "error CS1729: 'XXClass' does not contain a constructor that takes 0 arguments"的解決方案

出現這種錯誤的原因時,沒有在子類的構造函數中指出僅有帶參構造函數的父類的構造參數。

具體來講就是:

當子類要重用父類的構造函數時, C# 文法通常會在子類構造函數後面調用 : base( para_type, parameter).

假設父類有一個參數個數為1的構造函數, 沒有 0 參構造函數。 子類想要重用這個構造函數, 如果沒有寫 :base(para_type, parameter), 就會有這個錯誤。 

因為如果沒寫, VS 會認為子類是繼承父類的 0 參構造函數, 但是由于父類并沒有定義 0 參構造函數, 是以就會報錯。

另外, 可以在base()中調用一個靜态方法來修改子類構造函數的參數在傳遞給父類構造函數。 如:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<code>class</code> <code>ParentClass </code>

<code>{ </code>

<code>     </code><code>public</code> <code>ParentClass(</code><code>string</code> <code>Name) </code>

<code>     </code><code>{} </code>

<code>} </code>

<code>class</code> <code>ChildClass </code>

<code>      </code><code>public</code> <code>ChildClass(</code><code>string</code> <code>firstName, </code><code>string</code> <code>familyName):</code><code>base</code><code>( CombineName(firstName, familyName))</code>

<code>      </code><code>{</code>

<code>  } </code>

<code>      </code><code>static</code> <code>string</code> <code>ConbineName(</code><code>string</code> <code>firstName, </code><code>string</code> <code>familyName) </code>

<code>    </code><code>return</code> <code>string</code><code>.Format(</code><code>"{0},{1}"</code><code>, firstName, familyName);</code>

<code>  }</code>

<code>}</code>

參考文章

沒有整理與歸納的知識,一文不值!高度概括與梳理的知識,才是自己真正的知識與技能。 永遠不要讓自己的自由、好奇、充滿創造力的想法被現實的架構所束縛,讓創造力自由成長吧! 多花時間,關心他(她)人,正如别人所關心你的。理想的騰飛與實作,沒有别人的支援與幫助,是萬萬不能的。

    本文轉自wenglabs部落格園部落格,原文連結:http://www.cnblogs.com/arxive/p/5807553.html,如需轉載請自行聯系原作者