参数错误:无法转换

时间:2013-11-07 13:21:22

标签: c# types arguments

我在Main方法中写道:

zeichnen.OpenField(spiel.testReturner, spiel.testReturnerZwei);

错误是:参数1:

  • 无法转换为'方法组'到' int []'
  • 参数2:无法转换为'方法组'到'布尔[]'
  • 最佳重载方法匹配' Minesweeper.Draw.OpenField(int [],bool [])'有一些无效的论点

在我的Game课程中我有这个:

public int testReturner()
{
    return _minenArray[5, 5];
}

public int testReturnerZwei()
{
    return _boolArray[5, 5];
}

我的Drawing类中的方法是:

public void OpenField(int[,] minenArray, bool[,] boolArray)

Game类中的bool返回有以下错误:

  

无法隐式转换类型' bool'到' int'

5 个答案:

答案 0 :(得分:4)

这意味着您没有调用这些方法,并且方法的返回值不适用于OpenField

尝试将您的方法重新设计为这样。这是您提供的代码中有根据的猜测。

public int[,] testReturner()
{
  return new int[5, 5]; // or _minenArray
}

public bool[,] testReturnerZwei()
{
  return new bool[5, 5]; // or _boolArray
}

答案 1 :(得分:1)

像你这样改变你的游戏类

public int[,] testReturner
{
  get{return _minenArray;}
}

public bool[,] testReturnerZwei
{
  get{return _boolArray;}
}

<强>更新
使用

zeichnen.OpenField(spiel.testReturner, spiel.testReturnerZwei);

答案 2 :(得分:0)

你很可能想写:

zeichnen.OpenField(spiel.testReturner(), spiel.testReturnerZwei());

你没有调用这些方法。

答案 3 :(得分:0)

这有很多问题。

首先,您传递方法而不是实际参数。其次,您的testReturnertestReturnerZwei方法返回SINGLE数值,而您尝试调用的方法OpenField需要一个整数值数组和一个布尔值数组。

如果不知道确切的上下文以及您正在尝试做什么,很难说明需要采取哪些措施才能使您的代码完全按照您希望的方式工作。

以下是我的快速建议:

public int[,] testReturner
{
    //assuming _minenArray is an array of arrays, as you still need to return an array
    get { return _minenArray[5, 5]; }
}

public bool[,] testReturnerZwei
{
    //assuming _boolArray is an array of arrays, as you still need to return an array
    get { return _boolArray[5, 5]; }
}

这会将testReturnertestReturnerZwei从方法转换为参数。另外,请注意代码中的注释。

答案 4 :(得分:-1)

public int testReturner()
{
  return _minenArray[5, 5];
}

public bool testReturnerZwei()
{
  return _boolArray[5, 5];
}

替换为此类型转换错误,您使用int代替bool。