У такого подхода могут быть некоторые преимущества, такие как:
string options =
(model.Fruits.Value ? "FR," : "")
+ (model.Drinks.Value ? "DR," : "")
+ (model.Lunch.Value ? "LU," : "")
+ (model.Dinner.Value ? "DI," : "");
В частности, это будет один вызов 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;
, который во всем является целыми числами.