关于IF else-IF语句C#的通用编程
本文关键字:编程 IF else-IF 语句 关于 | 更新日期: 2023-09-27 18:29:43
我得到了这个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张图片,需要更新,具体取决于值的数据库。每张图片只能是三个选项中的一个,并且可以根据数据库进行更改。通过(复选标记)、失败(红色x)和未知(问号)。如果你需要更多细节,请告诉我。
我得到了这个if-else语句,其中有12个变量,可以是0,1或2。
任何时候,如果您有多个变量,并且希望能够以类似的方式处理这些变量,都应该使用它们的集合,例如数组或List<T>
。如果您还没有为它们收集,您可以创建一个:
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");
}
}
或者:
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";
}
(有些人不喜欢这样的"堆叠"条件,我可能不会在这种情况下使用它,因为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
根据您的代码,不需要检查值0-11,因为测试变量再次使用值12进行更改。因此,您可以只检查最后一个值,然后跳过所有其他值。
我会编写一个for循环来检查每个变量。或者,至少,把检查写成一个函数,每个变量都可以引用它。如果变量是串联的,并且它们的名称可以按顺序确定,则执行前者。如果变量名之间没有真正的关联,请稍后执行。
如有必要,将变量放入一个可以循环的数组中。