2010-10-15 186 views
1

快速的問題真的:我有這樣的代碼:奇怪的編譯器錯誤

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace Hovel { 
    public abstract class DamageType { 
     public string GetKillString(string instigatorName, string victimName) { 
      return killString.Replace("<inst>", instigatorName).Replace("<vict>", victimName); 
     } 
     protected string killString = "ERROR_NO_KILLSTRING_DEFINED"; 

     public string GetDamageString(string instigatorName, string victimName) { 
      return damageString.Replace("<inst>", instigatorName).Replace("<vict>", victimName); 
     } 
     protected string damageString = "ERROR_NO_DAMAGESTRING_DEFINED"; 
    } 

    public class DamageType_Default : DamageType { 
     killString = "ERROR_DEFAULT_DAMAGE_TYPE"; 
     damageString = "ERROR_DEFAULT_DAMAGE_TYPE"; 
    } 
} 

對我來說,這看起來不錯,但我得到了在DamageType_Default的只有兩行此錯誤:

Invalid token '=' in class, struct, or interface member declaration 

所以...什麼?

回答

4

的問題是以下行

killString = "ERROR_DEFAULT_DAMAGE_TYPE"; 
damageString = "ERROR_DEFAULT_DAMAGE_TYPE"; 

發生這些線在會員定義保留範圍類定義內,但代替正常代碼語句。你需要把它們放在方法中(可能是構造函數)

public DamageType_Default : DamageType { 
    public DamageType_Default() { 
    killString = "ERROR_DEFAULT_DAMAGE_TYPE"; 
    damageString = "ERROR_DEFAULT_DAMAGE_TYPE"; 
    } 
} 
+0

啊,謝謝...我應該去睡覺吧,嘿。 :) – Xenoprimate 2010-10-15 04:08:21

+2

@Motig或只是喝更多的紅寶石:) – JaredPar 2010-10-15 04:08:55

2

你正在定義一個類DamageType_Default,但你只是把一些代碼放在裏面,而不是在構造函數中。我想你的意思是:

public class DamageType_Default : DamageType { 
    public DamageType_Default() : base() { 
    killString = "ERROR_DEFAULT_DAMAGE_TYPE"; 
    damageString = "ERROR_DEFAULT_DAMAGE_TYPE"; 
    } 
} 

將定義在基類的構造函數,而構造函數將構造基類後設置這些值到新的重寫的。

0

你錯過了一個構造函數。具體來說,這兩行代碼應該在構造函數中。