不能隐式地将void类型转换为int类型
本文关键字:类型转换 int 类型 void 不能 | 更新日期: 2023-09-27 18:18:06
我正在为一个现有项目创建一个单元测试。
-
n1
和n2
为输入数字 -
op
是主程序中开关情况下的操作数
问题是与actual
。我无法匹配期望值和实际值,因为我得到错误cannot implicitly convert void to int
。
[TestMethod()]
public void docalcTest(int actual)
{
Form1 target = new Form1(); // TODO: Passenden Wert initialisieren
double n1 = 15; // TODO: Passenden Wert initialisieren
double n2 = 3; // TODO: Passenden Wert initialisieren
int op = 2; // TODO: Passenden Wert initialisieren
int expected = 5;
actual = target.docalc(n1, n2, op);
Assert.AreEqual(expected,actual);
}
docalc:
public void docalc(double n1, double n2, int op)
{
result = 0;
setText("clear");
switch (op)
{
case 1:
result = n1 + n2;
break;
case 2:
result = n1 - n2;
break;
case 3:
result = n1 * n2;
break;
case 4:
result = n1 / n2;
break;
}
setText(result.ToString());
}
你的方法target.docalc()
是一个void方法,而actual
是一个int。你不能像编译器说的那样把void
赋值给int
。
根据你的评论(你真的应该编辑你的问题),你的docalc()
看起来像这样:
public void docalc(double n1, double n2, int op)
{
result = 0;
...
setText(result.ToString());
}
您必须将方法的返回类型更改为int
,并返回结果:
public int docalc(double n1, double n2, int op)
{
int result = 0;
...
return result;
}
旁注,你为什么这样做?
[TestMethod()]
public void docalcTest(int actual)
{
...
actual = ...
测试方法将在没有参数的情况下被调用,所以它在这里有点没用。您可以将其更改为:
[TestMethod()]
public void docalcTest()
{
...
int actual = ...