我有一个带有两个值的条件。如果条件等于0
,则返回Absent
;如果条件等于1
,则返回present
。
现在我想将第三个值添加到我的条件中。如果条件等于3
,则返回Unacceptable absent
。
这是我的条件,具有两个值:
(status >= 1 ? "Present" : "Absent")
如何更改条件?
答案 0 :(得分:17)
使用查找字典。
//Initialized once in your program
var lookup = new Dictionary<int,string>
{
{ 0, "Absent"},
{ 1, "Present"},
{ 3, "Unacceptably Absent" }
};
//Call this whenever you need to convert a status code to a string
var description = lookup[status];
答案 1 :(得分:14)
使用嵌套三元运算符会为了简洁而牺牲可读性。我建议改用谦虚的switch
语句:
string foo(int status)
{
switch (status)
{
case 0:
return "Present";
case 1:
return "Absent";
case 3:
return "Unacceptable absent";
default:
throw new ArgumentOutOfRangeException(nameof(status), $"What kind of person passes {status}?");
}
}
答案 2 :(得分:4)
您可以将故障安全状态添加为“ NA”,并执行以下操作:
status == 0 ? "Absent" : status == 1? "Present" : status == 3? "Unacceptable Absent" : "NA";
答案 3 :(得分:4)
我建议对@Shubhams方法更易读,例如:
string foo(int status)
{
if (status == 0)
return ("Present");
else if (status == 1)
return ("Absent");
else if (status == 2)
return ("Somthing else");
else
return ("Outside");
}
答案 4 :(得分:3)
status >= 1 ?(status >2?"third Value":"Present") : "Absent"
喜欢
答案 5 :(得分:3)
最好的方法是尽可能地消除其他情况,这就是您的做法:
public static class AppStartupConfig
{
public static Dictionary<int,string> AttendanceStatus = new Dictionary<int,string>();
public static void InitAppStuff(){
//Bring basic data from database
//fill the list looping data for e.g:
if(AttendanceStatus.Count == 0){
AttendanceStatus.Add(0,"Absent");
AttendanceStatus.Add(1,"Present");
AttendanceStatus.Add(3,"Unacceptable absent");
}
}
}
要使用它,您将不需要整个应用程序,只需在应用程序启动时运行此方法,然后通过提供此字典的键即可获得价值,例如:>
AppStartupConfig.InitAppStuff();
Console.WriteLine(AppStartupConfig.AttendanceStatus[3]); //returns respective string value
答案 6 :(得分:2)
(status == 0 ? "Absent" : status == 1 ? "Present" : status == 3 ? "Unacceptable" : "Unknown status")
您可以嵌套运算符,以这种方式,您可以创建大的if&else树,在我看来,这是可读的。开关将更具可读性。
答案 7 :(得分:2)
您可以使用以下内容:
status == 0 ? "Absent" : status == 1 ? "Present" : "Unacceptable"
但是这种代码风格可读性不好。最好使用字典或switch / case语句等。
答案 8 :(得分:1)
喜欢:
status == 0 ? "Absent" : status == 1 ? "present" : status == 3 ? "Unacceptable Absent" : 1==1
希望对您有所帮助。
答案 9 :(得分:1)
如果必须坚持使用三元运算符,则可以修改代码以满足三个值。
string tmp = (status == 0 ? "Absent" : (status == 1 ? "Present" : "NA"));