C# 关于IF-else-IF语句的通用编程#

C# 关于IF-else-IF语句的通用编程#,c#,if-statement,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 = fai

我得到了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;
}

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

根据您的代码,不需要检查值0-11,因为测试变量再次使用值12更改。因此,您可以只检查最后一个值,然后跳过所有其他值。

我将编写一个for循环来检查每个变量。或者,至少,将检查写为一个函数,每个变量都可以引用该函数。如果变量是串联的,并且可以按顺序确定它们的名称,则执行前者。如果变量名之间没有真正的关联,请执行后面的操作

如有必要,将变量放入可以循环的数组中

我得到了if-else语句,其中有12个变量,可以是01或2

当您有几个变量需要以类似方式处理时,您应该为它们使用一个集合,例如数组或
列表
。如果尚未为它们创建集合,则可以创建一个集合:

int[] values = { value0, value, value2 /* etc * };
。。。虽然如果你能从一开始就把它们作为一个收藏会更好

然后,您可以对所有这些对象进行迭代。现在还不清楚为什么在这种情况下,您会在每个块中覆盖
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");
    }
}
或:


(有些人不喜欢这样的“堆叠”条件,我可能不会在switch语句可能更合理的情况下使用它,但它确实很方便。)

看起来像是数组的例子

        int[] values = { 1, 1, 2, 2, 1, 2 };
        for (int i = 0; i < values.Length; i++)
        {
            if (values[i] == 1)
            {
            }
            else if (values[i] == 2)
            {
            }
        }//for
int[]值={1,1,2,2,1,2};
for(int i=0;i
什么是“规则”?如果value12通过,则无论其他所有操作是否失败,它都将返回
pass
。这是否正确?在此代码中,
value
value{1..11}
不会影响
test
的最终值,因此可以忽略它们。这是一个打字错误吗?这个代码毫无意义,正如delnan所说,你可以删除四分之三的代码,而不改变任何东西。它们都是不同的参数。对于不同的对象。@user990951:有什么变化使您无法接受去年的答案吗?你需要关于某件事的更多信息吗?根据问题:“可以是0 1或2”。没有关于-1的消息。
        int[] values = { 1, 1, 2, 2, 1, 2 };
        for (int i = 0; i < values.Length; i++)
        {
            if (values[i] == 1)
            {
            }
            else if (values[i] == 2)
            {
            }
        }//for