c# - 条件运算符使用错误

标签 c# conditional-operator

我的代码是这样的:

if (statusCode== "1")
{
    statusCode = productStatusItemAvailable1;
}
else if(statusCode =="2")
{
    statusCode = productStatusItemOutOfStock1;
}
 else if(statusCode =="3")
{
    statusCode = productStatusItemAvailableOnRemoteDate1;
}
else if(statusCode =="4")
{
    statusCode = productStatusAlternativeItemAvailable1;
}
else if(statusCode =="5")
{
    statusCode = productStatusItemSoldOutAndOurSuppliersHaveNoAvailable;
}
else if(statusCode =="6")
{
    statusCode = productStatusItemSoldOutContactCustomerService1;
}

为了使其更具可读性和易于处理,我尝试应用三元运算符

statusCode == "1"  ? productStatusItemAvailable1: "2" ? productStatusItemOutOfStock1 : "3" ? productStatusItemAvailableOnRemoteDate1  : "4"  ? productStatusAlternativeItemAvailable1 : "5" ? productStatusItemSoldOutAndOurSuppliersHaveNoAvailable : "6" ? productStatusItemSoldOutContactCustomerService1;

但这显示错误

Can not implicitly convert string to bool.

我做错了什么?还是不能使用字符串?

最佳答案

如前所述,您没有根据字符串检查值。也就是说,您绝对应该为此使用 switch 语句:

switch(statusCode)
{

    case "1":
        // do some stuff
    break;

    // etc...
}

虽然理想情况下,statusCode 应该是一个枚举,其中每个值都对应于错误,但它会使您的代码更清晰。

关于c# - 条件运算符使用错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20655255/

相关文章:

javascript - 使用 && || 的单线短路评估在 JavaScript 中

c++ - 使用条件 if else 运算符初始化引用变量

neo4j - 非运算符查询密码 Neo4j

c# - 如何转换泛型类型以适应另一个泛型方法

c# - 如何在 C# 摘要中包含 html 标记,以便将其作为文本处理(而不是解析为 XML)?

c# - 您必须添加对程序集 mscorlib 的引用,version=4.0.0

java - 查找通用数组方法中最大元素,整数,字符串,字符

objective-c - '?:' 和 objective-c 中的 if 语句有什么区别吗?

c# - E.F 上下文 - 存储过程和查询

c# - 如何将数据作为序列化对象插入数据库