2017-03-12 6 views
0

Also, ich habe diese Klasse mit den Setter und Getter und einem Konstruktor.Konstruktor mit Parametern verwenden C#

namespace Ficha04 
{ 
    class Personagem 
    { 
     private string nome; 
     private int vida; 
     private int mana; 
     private int estamina; 
     private int moral; 
     private int forca; 
     private int inteligencia; 
     private int destreza; 

     public string Nome 
     { 
      get 
      { 
       return nome; 
      } 

      set 
      { 
       if (value.Length > 0) 
       { 
        nome = value; 
       } 
      } 
     } 

     public int Vida 
     { 
      get 
      { 
       return vida; 
      } 

      set 
      { 
       if (value < 0) 
       { 
        vida = 0; 
       } 
       else 
       { 
        vida = value; 
       } 
      } 
     } 

     public int Mana 
     { 
      get 
      { 
       return mana; 
      } 

      set 
      { 
       if (value < 0) 
       { 
        mana = 0; 
       } 
       else 
       { 
        mana = value; 
       } 

      } 
     } 

     public int Estamina 
     { 
      get 
      { 
       return estamina; 
      } 

      set 
      { 
       if (value < 0) 
       { 
        estamina = 0; 
       } 
       else 
       { 
        estamina = value; 
       } 
      } 
     } 

     public int Moral 
     { 
      get 
      { 
       return moral; 
      } 

      set 
      { 
       moral = value; 
      } 
     } 

     public int Forca 
     { 
      get 
      { 
       return forca; 
      } 

      set 
      { 
       if (value < 10) 
       { 
        value = 10; 
       } 
       else 
       { 
        forca = value; 
       } 
      } 
     } 

     public int Inteligencia 
     { 
      get 
      { 
       return inteligencia; 
      } 

      set 
      { 
       if (value < 25) 
       { 
        value = 25; 
       } 
       else 
       { 
        inteligencia = value; 
       } 
      } 
     } 

     public int Destreza 
     { 
      get 
      { 
       return destreza; 
      } 

      set 
      { 
       if (value < 10) 
       { 
        value = 10; 
       } 
       else 
       { 
        destreza = value; 
       } 
      } 
     } 

     public Personagem(string nome, int vida, int mana, int estamina, int moral, int forca, int inteligencia, int destreza) 
     { 
      Nome = nome; 
      Vida = vida; 
      Mana = mana; 
      Estamina = estamina; 
      Moral = moral; 
      Forca = forca; 
      Inteligencia = inteligencia; 
      Destreza = destreza; 
     } 
    } 
} 

Und Im Versuch, ein Objekt aus dieser Klasse zu erstellen:

private void btnInsere_Personagem_Click(object sender, EventArgs e) 
{ 

    Personagem persona1 = new Personagem() 
    { 
     Nome = textBox_Nome.Text, 
     Vida = Convert.ToInt32(upDown_Vida.Value), 
     Mana = Convert.ToInt32(upDown_Mana.Value), 
     Estamina = Convert.ToInt32(upDown_Estamina.Value), 
     Moral = Convert.ToInt32(upDown_Moral.Value), 
     Forca = Convert.ToInt32(upDown_Forca.Value), 
     Inteligencia = Convert.ToInt32(upDown_Inteligencia.Value), 
     Destreza = Convert.ToInt32(upDown_Destreza.Value), 
    }; 
} 

Und ich bekomme diese Fehlermeldung: „Es gibt gegeben kein Argument, das auf den erforderlichen formale Parameter‚nome‘von‚personagem entspricht .Personagem (Zeichenfolge, int, int, int, int, int, int, int) '". Ich wechselte zu nome = textBox_Nome.Text, persona1.Nome = textBox_Nome.Text, persona1.nome = textBox_Nome.Text ,, ... und ich kann es immer noch nicht zum Laufen bringen. Was vermisse ich ? Sorry über etwas, ich bin neu in C#.

+0

Haben Sie den Text in der Textbox angegeben? –

+0

Die Idee besteht darin, das Programm auszuführen, den Text einzugeben und das Objekt mit dem Text zu erstellen, der in das Textfeld eingegeben wird. Es gibt keinen Wert dort, bis der "Benutzer" einen einfügt. –

+0

Sorry, ich glaube ich habe hier einen Fehler gemacht –

Antwort

4

Ihre Klasse hat keinen Default-Konstruktor, so könnten Sie die man verwenden Sie definiert und die Parameter an sie übergeben:

Personagem persona1 = new Personagem(
    textBox_Nome.Text, 
    Convert.ToInt32(upDown_Vida.Value), 
    Convert.ToInt32(upDown_Mana.Value), 
    Convert.ToInt32(upDown_Estamina.Value), 
    Convert.ToInt32(upDown_Moral.Value), 
    Convert.ToInt32(upDown_Forca.Value), 
    Convert.ToInt32(upDown_Inteligencia.Value), 
    Convert.ToInt32(upDown_Destreza.Value) 
); 

Alternativ, wenn Sie die Eigenschaften initializer Syntax verwenden möchten, könnten Sie definieren ein Standardkonstruktor für Ihre Klasse:

public Personagem() 
{ 
} 
+0

ist das nicht mein Konstrukteur? "öffentliche Persönlichkeit (string nome, int vida, int mana, int estamina, int moralisch, int forca, int intellencia, int destreza) ..."? Ich bin jetzt irgendwie verloren –

+1

Nein, das ist kein Standardkonstruktor. In .NET heißt ein Standardkonstruktor Konstruktor, der keine Parameter akzeptiert. Deine nehmen 8 Parameter. Ein Standardkonstruktor sieht folgendermaßen aus: 'public class Personagem() {}'. Sie können also entweder Ihren benutzerdefinierten Konstruktor entfernen oder einen Standardkonstruktor hinzufügen, wenn Sie die Syntax des Klasseninitialisierers verwenden möchten. Ansonsten ist es auch in Ordnung, wenn ein benutzerdefinierter Konstruktor Parameter übernimmt. Sie müssen nur sicherstellen, dass Sie diese angeben, wenn Sie eine Instanz Ihrer Klasse erstellen, wie in meiner Antwort gezeigt. –

+0

Ho ok, hab es. Vielen Dank ! –

Verwandte Themen