C# 无法使用实例引用访问

C# 无法使用实例引用访问,c#,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.

可能重复:

我不确定代码出了什么问题。我尝试过谷歌搜索,但没有得到相关信息

这是我的for循环

          for (int i = 0; i < 5; i++)
            {
                for (int j = 0; j < 5; j++)
                {
                    slide.Move(s, i, j); // this is the problem. 
                }
            }
for(int i=0;i<5;i++)
{
对于(int j=0;j<5;j++)
{
slide.Move(s,i,j);//这就是问题所在。
}
}
这是我的移动函数。根据我的说法,我想我是在按预期的方式调用该函数,但我无法找出错误所在。我对这门语言相当陌生

         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();
        }
    }
受保护的静态无效移动(字符串s、int x、int y)
{
Console.WriteLine(“我处于移动功能”);
尝试
{
控制台设置光标位置(origCol+x,origRow+y);
控制台。写入;
}
捕获(ArgumentOutOfRange异常)
{
Console.Clear();
控制台写入线(e.Message);
}
对于(int i=0;i
Move
是一种staic方法,因此可以使用
ClassName.Move
调用它

所以,这里有两种选择

  • 改变
    slide.Move(s,i,j)
    使用类名,而不是实例变量。例如,如果类名
    Slide
    ,则应使用
    Slide.Move(s、i、j)

  • Move
    更改为实例方法

  • 我认为选择2是正确的选择。正如乔恩·斯基特指出的那样。更有意义的是,
    Move
    应该是一种实例方法

    受保护的静态无效移动(字符串s、整数x、整数y)

    静态成员属于该类,而不是该类的实例。要访问它们,请在它们前面加上类的名称

    [ClassName].Move(s, x, y);  //Slide.Move(x, y, z); assuming your class name is Slide
    
    要像这样使用它,需要删除静态修改器

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

    ... 当然,也可以将
    Move
    方法作为实例方法。它看起来不应该是静态的。for循环在main中,Move函数在类中。所以我还是应该将其与类的名称一起使用,而不是与实例变量一起使用。是的,就是这样,这是有道理的。它起作用了。谢谢