1

重複の可能性:
teststring.Join を使用し、teststring.Split を使用しないと、「インスタンス参照でアクセスできません」と表示されるのはなぜですか? (c#)

コードの何が問題なのかわかりません。ググってみましたが、関連情報がありませんでした。

これは私の for ループです。

          for (int i = 0; i < 5; i++)
            {
                for (int j = 0; j < 5; j++)
                {
                    slide.Move(s, i, j); // this is the problem. 
                }
            }

これが私の移動機能です。私によると、関数を想定どおりに呼び出していると思いますが、何が問題なのかわかりません。私はかなり新しい言語です。

         protected static void Move(string s, int x, int y)
    {
        Console.WriteLine("I am in Move function");
        try
        {
            Console.SetCursorPosition(origCol + x, origRow + y);
            Console.Write(s);
        }
        catch (ArgumentOutOfRangeException e)
        {
            Console.Clear();
            Console.WriteLine(e.Message);
        }

        for (int i = 0; i < DEFAULT_SIZE; ++i)
        {
            for (int j = 0; j < DEFAULT_SIZE; ++j)
            {
                    Console.Write("#");
                    Console.Write("\r{0}%   ", i,j);
                    //Console.WriteLine(slider[i, j]);
            }
            Console.WriteLine();
            Console.ReadKey();
        }
    }
4

2 に答える 2

2

Moveは静的メソッドなので、 を使用して呼び出すことができますClassName.Move

したがって、ここには 2 つのオプションがあります。

  1. slide.Move(s, i, j);インスタンス変数ではなく、クラス名を使用するように変更します。たとえば、クラス名の場合SlideSlide.Move(s, i, j);.

  2. Moveインスタンスメソッドに変更。

オプション 2 が有効な方法だと思います。ジョン・スキートが指摘したように。Moveインスタンスメソッドであることはより理にかなっています。

于 2012-10-18T06:32:29.870 に答える
1

protected static void Move(string s, int x, int y)

静的メンバーは、クラスのインスタンスではなくクラスに属します。それらにアクセスするには、それらの前にクラスの名前を付けます

[ClassName].Move(s, x, y);  //Slide.Move(x, y, z); assuming your class name is Slide

そのように使用するには、 static 修飾子を削除する必要があります

protected void Move(string s, int x, int y)
于 2012-10-18T06:34:05.717 に答える