Я хотел бы сделать что-то вроде этого диез:Non Static/Постоянные значения в случае заявления в пределах коммутатора
int i = 0;
foreach (Item item in _Items)
{
foreach (Field theField in doc.Form.Fields)
{
switch (theField.Name)
{
case "Num" + i++.ToString(): // Number of Packages
theField.Value = string.Empty;
break;
}
}
}
У меня есть 20 или около того поля, названные Num1, Num2 и т.д. Если я могу сделайте это все в одном выражении/блоке, я бы предпочел сделать это.
Но компилятор жалуется, что операторы case должны быть постоянными. Есть ли способ использовать динамические переменные в аргументе case, чтобы я мог избежать повторения кода?
Я просто подумал, что я хотел бы упомянуть, целью этого метода является заполнение полей в форме PDF, с соглашениями об именах, которые я не могу контролировать. Есть 20 строк полей с именами типа «Num1» - «Num20». Вот почему конкатенация строк была бы полезной в моем сценарии.
Причина, по которой вы не можете обсуждать (обсуждать?) В [ограничениях на использование операторов C# - почему?] (Http://stackoverflow.com/questions/44905/c-sharp-switch-statement-limitations-why) Я думаю, [этот ответ] (http://stackoverflow.com/a/45584/516797) подводит итог. –
Вы уверены, что не хотите 'i ++' за пределами внутреннего' foreach'? – TrueWill
Ограничение на замещение оператора C# сообщение отвечает на мой вопрос отлично. Большое спасибо! – nocarrier