2011-01-08 11 views
0

Ich verstehe nicht, warum es mir Folgendes nicht erlaubt. Kennt jemand einen Weg, wie ich das erreichen kann?Fehler 12 Ein Feldinitialisierer kann nicht auf das nicht statische Feld, die Methode oder die Eigenschaft verweisen. WindowsGame1.Player.BaseStrength

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

namespace WindowsGame1 
{ 
    public class Player 
    { 
     int BaseStrength = 10; 
     int BaseIntelligence = 10; 
     int BaseDexterity = 10; 
     int BaseStamina = 10; 
     int BaseSpeed = 10; 

     int Damage; 
     int SpellDamage; 
     int Accuracy; 
     int LifePoints; 
     int CastingSpeed; 

     ***int Damage = (BaseStrength/2);*** 

    } 
} 

Der Fehler, den ich bekommen ist:

Fehler 12 A Feldinitialisierer nicht das Nicht-statisches Feld verweisen kann, eine Methode oder Eigenschaft ‚WindowsGame1.Player.BaseStrength

Antwort

2

Wenn Sie Möchten Sie einen Wert erhalten, der auf der Grundlage anderer Felder berechnet wird, sollten Sie eine property:

verwenden

Wenn Sie jedoch ein normales Feld verwenden und es einmalig beim Instanziieren des Objekts festlegen möchten, sollten Sie den Initialisierungscode in den Konstruktor einfügen.

public class Player 
{ 
    int baseStrength = 10; 
    int damage; 

    public Player() 
    { 
     damage = baseStrength/2; 
    } 
} 
Verwandte Themen