sto*_*tom 0 .net c# if-statement
我试图string根据boolean属性值进行逗号分隔model.
码
string options = string.Empty;
if (model.Fruits.Value)
{
options += "FR,";
}
if (model.Drinks.Value)
{
options += "DR,";
}
if (model.Lunch.Value)
{
options += "LU,";
}
if (model.Dinner.Value)
{
options += "DI,";
}
Run Code Online (Sandbox Code Playgroud)
我们可以使上面的代码基于简写,使用ternary conditional operator (?:)或者我应该保留上面的代码,因为它更具可读性?
任何建议都会很棒.
一种方法可能有一些优点:
string options =
(model.Fruits.Value ? "FR," : "")
+ (model.Drinks.Value ? "DR," : "")
+ (model.Lunch.Value ? "LU," : "")
+ (model.Dinner.Value ? "DI," : "");
Run Code Online (Sandbox Code Playgroud)
具体来说,这将是一次调用string.Concat(参见此处的示例 - 您正在寻找单个call string [mscorlib]System.String::Concat(string, string, string, string)),因此它将避免+="所有选项"场景中的大量中间字符串().但是,坦率地说,我建议使用[Flags] enum替代,即
[Flags]
enum FoodOptions {
None = 0,
Fruits = 1,
Drinks = 2,
Lunch = 4,
Dinner = 8,
}
var options = FoodOptions.None;
if(model.Fruits.Value) options |= FoodOptions.Fruits;
if(model.Drinks.Value) options |= FoodOptions.Drinks;
if(model.Lunch.Value) options |= FoodOptions.Lunch;
if(model.Dinner.Value) options |= FoodOptions.Dinner;
Run Code Online (Sandbox Code Playgroud)
这只是整数.
| 归档时间: |
|
| 查看次数: |
80 次 |
| 最近记录: |