【发布时间】:2020-02-07 14:57:34
【问题描述】:
您好,我正在尝试在我的代码中使用枚举创建一个简单的计算器,以访问用户理论上将输入的运算符。问题和设置如下图所示。但是我不明白为什么这段代码不起作用。谁能带领我朝着正确的方向前进?我不需要实际的解决方案,只需要推动它。
这是我目前的代码。
enum MathOperator
{
Add,
Subtract,
Multiply,
Divide,
};
public double Test5(double num1, double num2, MathOperator op)
{
double num3;
switch (op)
{
case MathOperator.Add:
num3 = num1 + num2;
return num3;
case MathOperator.Subtract:
num3 = num1 - num2;
return num3;
case MathOperator.Multiply:
num3 = num1 * num2;
return num3;
case MathOperator.Divide:
num3 = num1 / num2;
return num3;
};
我尝试将枚举放在代码主体中,在枚举之前省略 public,使用 switch (MathOperator) 等等,但我似乎无法让它远程工作。
有3个错误:
CS0535 - “提交”未实现接口成员 Tests.Test5 (双,双,数学运算)
CS0161 - Submission.Test5(double,double, Submission.MathOperator): 不是 所有代码路径都返回一个值
CS0051 - 可访问性不一致:参数类型 'Submission.MathOperator 比方法更难访问 Submission.Test5(double,double, Submission.MathOperator).
【问题讨论】:
-
“不会工作”是什么意思?您看到了什么错误/问题?
-
通过快速查看它,它应该可以工作。您是否尝试过使用硬编码参数调用此方法?像 Console.WriteLine(Test5(10, 10, MathOperator.Add)); ?
-
如果你得到的枚举不是这 4 种情况中的任何一种,你会在 swtich 中缺少默认值,或者在 switch 之外缺少额外的返回值。
-
所以当我这样运行它时,我得到 3 个错误。第一个错误 CS0535 - 'Submission' 没有实现接口成员 Tests.Test5 (double, double, MathOperator), CS0161 - Submission.Test5(double,double, Submission.MathOperator): 并非所有代码路径都返回一个值,并且错误 CS0051 - 可访问性不一致:参数类型 'Submission.MathOperator 比方法 Submission.Test5(double,double, Submission.MathOperator) 更难访问。
-
请将这些错误消息添加到您的问题中。它们是必不可少的信息。
标签: c# enums switch-statement