我正在将代码从 VB.net 转换为 C#。由于是 C# 的新手,我被困在Decimals的Switch()语句上。我发现我不能在 switch 语句中使用十进制值。
VB switch 语句如下所示:
changeAmt 是十进制
选择案例更改量
Case Is > 0
expressions
Case Is < 0
expressions
如何将其转换为 C#?
我是否必须使用 if-else 语句。我想使用 switch 因为它会使代码更容易编写和理解
您必须为此使用if
语句。您可以将值转换为不同的类型,但您仍然不能在case
.
所以:
if (changeAmt > 0) {
...
} else if (changeAmt < 0) {
...
}
您仍然可以做的是单级间接。它使您想要表达的内容更加清晰,并随心所欲地保留结构。而且,您可以在任何想要使用十进制开关的地方使用此转换。很简单,不是吗?
这是一些简单的代码来显示我想告诉的内容:
public enum EnumChangeAmt
{
Undetermined,
Negative,
Positive,
ExactlyNull,
}
public class EnumSwitchSample
{
public void EnumSwitch()
{
var changeAmt = 0;
var changeAmtType = GetChangeAmt(changeAmt);
switch (changeAmtType)
{
case EnumChangeAmt.Negative:
{
break;
}
case EnumChangeAmt.Positive:
{
break;
}
case EnumChangeAmt.ExactlyNull:
{
break;
}
case EnumChangeAmt.Undetermined:
default:
{
// do something about it
break;
}
}
}
public EnumChangeAmt GetChangeAmt(int changeAmt)
{
if (changeAmt < 0)
{
return EnumChangeAmt.Negative;
}
if (changeAmt > 0)
{
return EnumChangeAmt.Positive;
}
if (changeAmt == 0)
{
return EnumChangeAmt.ExactlyNull;
}
return EnumChangeAmt.Undetermined;
}
}
正如 Andre Calil 所说,枚举在这里非常有用!
你必须使用if-else
. 在 C# 中,switch 语句仅用于常量值的情况。
VB.Net 中的语句支持比C# 中的语句Select Case
更广泛的表达式。switch
AC#switch
本质上仅限于数字和字符串常量,同时Select Case
可以支持任意表达式。当移植Select Case
不适合 C# 范围的内容时,switch
您应该使用if / else
语句
if (changeAmt > 0) {
// expressions
} else if (changeAmt < 0) {
// expressions
}
您只能在 C# 中切换特定值,因此在您的特定情况下,您需要使用 if else if:
if(changeAmt < 0){
} else if (changeAmt > 0)
{
} else
{
}
switch 语句仅支持整数类型(枚举未列出,但可以与 switch 语句一起使用,因为它们由整数类型支持)(如 Changeling 所指出的,还支持字符串 - 请参阅注释以供参考)以及与常量值的相等比较. 因此,您必须使用一些 if 语句。
if else 可以用吗?
如果(是 > 0)
expressions
否则如果(是 < 0)
expressions
最容易阅读的解决方案是使用 if-else 块。
if (changeAmt > 0)
{
// blablabla
}
else if (changeAmt < 0)
{
// blablabla
}
不知道为什么它是 VB 中的 switch case,似乎没有必要。
Fordecimals
你可以使用if
andif-else
语句。
喜欢
if(condition)
{
}
else if(condition)
{
}