2017-03-12 9 views
0

したがって、このクラスにはセッタとゲッタとコンストラクタがあります。パラメータでコンストラクタを使用する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; 
     } 
    } 
} 

とIM:

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), 
    }; 
} 

そして、私はこのエラーを取得する:「Personagem」が必要な仮パラメータ 『ノーム』に対応して与えられた引数はありません.Personagem(文字列、int、int、int、int、int、int、int) '"私はnome = textBox_Nome.Text、persona1.Nome = textBox_Nome.Text、persona1.nome = textBox_Nome.Text ,,に変更しました。私はまだそれを働かせることはできません。私は何が欠けていますか?すみません、ごめんなさい。

+0

テキストボックスにテキストを入力しましたか? –

+0

アイデアは、プログラムを実行し、テキストを入力し、テキストボックスに入力されたテキストでオブジェクトを作成することです。 「ユーザー」がそれを挿入するまで価値はありません。 –

+0

申し訳ありませんが、ここで間違えてしまったと思います –

答えて

4

あなたが定義したものを使用して、それにパラメータを渡すことができるようにあなたのクラスは、デフォルトコンストラクタを持っていない:

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) 
); 

また、プロパティの初期化子構文を使用したい場合は、あなたが定義することができあなたのクラスのデフォルトコンストラクタ:

public Personagem() 
{ 
} 
+0

これは私のdeafultコンストラクタですか? "パブリックPersonagem(文字列の鼻、int vida、intマナ、int estamina、int moral、int forca、int inteligencia、int destreza)..."?今すぐ失ったIm –

+1

いいえ、これはデフォルトのコンストラクタではありません。 .NETでは、デフォルトコンストラクタはコンストラクタと呼ばれ、パラメータを一切使用しません。あなたは8つのパラメータを取る。デフォルトコンストラクタは次のようになります: 'public class Personagem(){}'。したがって、クラス初期化子構文を使用する場合は、カスタムコンストラクタを削除するか、デフォルトのコンストラクタを追加することができます。それ以外の場合は、カスタムコンストラクタにパラメータを渡すこともできます。答えに示すように、クラスのインスタンスを作成するときにそれらを指定するだけです。 –

+0

こんにちは、それを持っています。どうもありがとうございました ! –

関連する問題