关于IF的一般编程if语句C#

use*_*951 -4 c# if-statement

好吧,我得到了这个if else语句,其中我有12个变量,可以是0,1或2.如果它的传递是0,如果它的1失败,如果它的2是未知的.我想知道是否有人知道用C#编写它的简短方法

这是我必须写的,如果没有

string pass = "pass";
string fail = "fail"; 
string unknown = "unknown"
if ( value == 0)
{
    test1 = pass; 
}
else if (value == 1)
{ 
    test1 = fail; 
}
else if (value == 2)
{
    test1 = unknown; 
}
if ( value1 == 0)
{
    test2 = pass; 
}
else if (value1 == 1)
{ 
    test2 = fail; 
}
else if (value1 == 2)
{
    test2 = unknown; 
}
.
.
.

if ( value12 == 0)
{
   test13 = pass;
}
Run Code Online (Sandbox Code Playgroud)

让我再解释一下.我在网页上有12张图片需要更新,具体取决于值的数据库.每张图片只能是3个选项中的一个,可以根据数据库进行更改.通过(复选标记),失败(红色x)和未知(问号).如果您需要更多详细信息,请告诉我们.

Jon*_*eet 6

好吧,我得到了这个if else语句,其中我有12个变量,可以是0 1或2.

每当你想要以类似的方式处理几个变量时,你应该为它们使用一个集合,例如一个数组或一个List<T>.如果您还没有他们的集合,您可以创建一个集合:

int[] values = { value0, value, value2 /* etc * };
Run Code Online (Sandbox Code Playgroud)

...虽然如果你从一开始就把它们作为一个集合会更好.

然后你可以遍历所有这些.在这种情况下,为什么要覆盖test每个块中的值,这并不是很清楚,但是拥有一组输入最终会产生一种创建输出集合的自然方式.您还可以使用switch语句或条件表达式来简化检查.例如:

public static string ConvertValueToLabel(int value)
{
    switch (value)
    {
        case 0: return "pass";
        case 1: return "fail";
        case 2: return "unknown";
        // Adjust this behaviour as appropriate...
        default: throw new ArgumentOutOfRangeException("value");
    }
}
Run Code Online (Sandbox Code Playgroud)

要么:

public static string ConvertValueToLabel(int value)
{
    // Note that this doesn't do the same range checking as the version above
    return value == 0 ? "pass"
        :  value == 1 ? "fail"
        :  "unknown";             
}
Run Code Online (Sandbox Code Playgroud)

(有些人不喜欢这样的"堆叠"条件,我可能不会在这种情况下使用它,因为switch语句可能更明智,但它可以非常方便.)