1. ホーム
  2. c#

[解決済み] 1 つの引数を取るメソッド '' のオーバーロードがない

2022-01-30 23:11:13

質問

さて、今回の私の問題は、基本的にタイトルに書いてある通りです。私は学校で行っているTic Tac Toeのプロジェクトで、Player2クラスのbool値を呼び出そうとしているところです。Form1.cs の冒頭で "Player Player1, Player2;" を使って Player というクラスのインスタンスを2つ作成していることは、特筆すべき点だと思います。この件に関して、インターネット上で複数の投稿を読みましたが、どれも提供する以上のパラメータを呼び出そうとしている人たちばかりです。bool 値の true または false が 1 つ以上であるとは思えません。

よろしくお願いします。

この問題が発生するボタンの1つです。

public void Btn1_Click(object sender, EventArgs e) >{

        {
            if (click1 == 0) 
            {
            if (Player2.GetActive(true))//(turn == 0)
                {
                 Btn1.Text = "X";
                }
                else
                {
                    >Btn1.Text = "O";
                }
                //turn++;
                click1++;
            }
            else
            {
                Btn1.Text = Btn1.Text;
           }
            display();
            checkit();
       }
    }

これが私のプレイヤークラスです。

` public class Player
{
    //Characteristics
    string name;
    int points;
    bool Active;

    //Constructor
    public Player() { points = 0; Active = true; }

    //Methods
    public void SetName(string n) { name = n; }
    public string GetName() { return name; }
    public void SetPoints(int p) { points = p; }
    public int GetPoints() { return points; }
    public void SetActive(bool a) { Active = a; }
    public bool GetActive() { return Active; }`

解決方法は?

これです。

if(Player2.GetActive(true))

を使用する場合、余分な引数 ( true というメソッドに GetActive . のメソッド宣言からわかるように GetActive は、パラメータを受け取りません。

public bool GetActive() { return Active; }
//                   ↑
//              empty parentheses

ここで言いたいのは、"if ですね。 Player2.GetActive() が真なら..." ですよね?であれば、欲しい値を指定する必要はありません。 true これだけでいいんです。

if (Player2.GetActive())

偽であるかどうかを確認したい場合は、以下のように追加します。 ! を呼び出す前に、その結果を否定する。

if (!Player2.GetActive())