Я хотел бы отформатировать фразу и сделать окончание в соответствии с количеством элементов.
string s = string.Format("There are {0} items, bla bla {1}",
itemsCnt,
() => {switch(itemsCnt)
{
case 0:
return "make some...";
case 1:
case 2:
return "try more";
default:
return "enough";
}}
);
Синтаксис неправильный, я считаю, что анонимный метод должен работать здесь как-то...
Обновление:
Я мог бы использовать отдельную функцию форматирования. Я хотел бы использовать функцию в Razor, и я хотел бы видеть, что она формирует логику в одном месте. И, кроме того, мне было любопытно, как это сделать :-)
Код создает делегат Func и выполняет его:
string s = string.Format("There are {0} items, bla bla {1}",
itemsCnt,
new Func<string>(() =>
{
switch (itemsCnt)
{
case 0:
return "make some...";
case 1:
case 2:
return "try more";
default:
return "enough";
}
})()
);
Зачем использовать анонимный метод здесь?
Регулярный был бы так же хорош:
private string Translate(int itemsCnt)
{
switch(itemsCnt)
{
case 0:
return "make some...";
case 1:
case 2:
return "try more";
default:
return "enough";
}
}
то результат:
string s = string.Format("There are {0} items, bla bla {1}",
itemsCnt,
Translate(itemsCnt));
string.Format(...)
не имеет перегрузки, которая принимает функцию