1

我收到一个错误:

“MoveBall.Game”不包含“ballSpeedAxis1”的定义,并且找不到接受“MoveBall.Game”类型的第一个参数的扩展方法“ballSpeedAxis1”(您是否缺少 using 指令或程序集引用?)

一开始,我尝试将值一个一个插入时没有错误。

int ballSpeedAxis1 = 1;
int ballSpeedAxis2 = 1;
...
int ballSpeedAxis10 = 1;

但是,在我更改为 for 循环后,如下所示。

var ballSpeedXAxis = new int[10];
for (int i = 0; i < ballSpeedXAxis.Length; i++)
{
    ballSpeedXAxis[i] = 1;
}

错误发生在以下几行:

private void OnUpdate(object sender, object e)
{
    Canvas.SetLeft(this.ball1, this.ballSpeedXAxis + Canvas.GetLeft(this.ball1));
}

我可以知道我该如何解决吗?

4

2 回答 2

2

因为你的变量范围是错误的。ballSpeedXAxis应该在类内部而不是在初始化它的方法内部定义。此外,如果定义了类范围的变量,则不能使用 var。奇怪的是,您不在 OnUpdate 方法中使用索引。

class MyClass {

    int[] ballSpeedXAxis = new int[10];

    MyClass() { // constructor
       for (int i = 0; i < ballSpeedXAxis.Length; i++)
       {
            ballSpeedXAxis[i] = 1;
       }
    }

    private void OnUpdate(object sender, object e)
    {
        Canvas.SetLeft(this.ball1, this.ballSpeedXAxis[<some index here>] + Canvas.GetLeft(this.ball1));
    }
}
于 2013-07-24T08:08:25.733 回答
0

您将 ballSpeedXAxis 更改为一个数组,但在您的 OnUpdate 中您试图访问它,就好像它是一个普通的整数:

private void OnUpdate(object sender, object e)
{
     Canvas.SetLeft(this.ball1, this.ballSpeedXAxis + Canvas.GetLeft(this.ball1));
}

您必须在要使用的数组中指定 int 的索引

例如 this.ballSpeedXAxis[0]。

现在你说错误是:

“MoveBall.Game”不包含“ballSpeedAxis1”的定义

如果您使用的是 VisualStudio、MonoDevelop 或 Xamarin Studio,单击错误窗口中的错误项应该会将您带到代码中仍然引用 ballSpeedAxis1 的位置。

您甚至可以尝试按 CTRL+F 并在搜索框中输入“ballSpeedAxis1”
并搜索整个解决方案。

如果使用任何一种方法都找不到位置,则可能是某些内容不同步,您应该使用 IDE 的“CLEAN SOLUTION”和“REBUILD SOLUTION”功能。

于 2013-07-24T04:27:57.387 回答