Пример операторов коммутатора
Если общее количество этого текстового поля: PostDiscountTextBox.Text = $500.00, как мы можем сделать заявления Switch, в которых указано, что если стоимость скидки после скидки составляет от 0,00 до 999,99, отобразите окно с сообщением "Эта сумма соответствует для" частых миль летучей мыши "A-100 и кнопку" ОК"?
Кто-нибудь представит пример оператора switch?
У меня есть это до сих пор, и я не думаю, что это вообще следует. Кто-нибудь проведет меня через это? Спасибо.
switch (PostDiscountCostTextBox.Text)
{
case (0.00 < && PostDiscountCostTextBox.Text <= 999.00)
Спасибо всем, кто помог, но я пытаюсь понять, как использовать оператор switch, который оценивает стоимость Post-discount, основанную на диапазоне числовых значений (ничего о инструкции if). Да, будет много дел, и это будут мои первые два случая. Кто-нибудь будет достаточно любезен, чтобы представить мне пример, чтобы я мог заполнить остальные мои дела? У меня много. Спасибо.
Если стоимость Post-discount Cost между 0.00 и 999.99, отобразите окно сообщения с сообщением "Эта сумма подходит для частых миль летучего" A-100 ". и кнопку" ОК". Не следует использовать текст или значок заголовка.
Если стоимость Post-discount Cost между 1000.00 и 1.499.99, отобразите окно с сообщением "Эта сумма подходит для" B-500 "частых миль летчика ". и кнопку" ОК". Не следует использовать текст или значок заголовка.
Ответы
Ответ 1
В С# этот тип switch
не разрешен.
Вот пример правильного использования switch
switch(n)
{
case 1:
cost += 25;
break;
case 2:
cost += 25;
break;
case 3:
cost += 50;
break;
default:
Console.WriteLine("Invalid selection. Please select 1, 2, or 3.");
break;
}
Ваш пример должен быть преобразован в оператор if-elseif-else
:
if(first_case_predicate)
{
}
else if(another_predicate)
{
}
else
{
// like 'default' of switch
}
Ответ 2
Вы не можете проверить диапазоны в switch
, вы должны использовать цепочку else if
. См. Использует ли десятичные числа в переключателе невозможным в С#?
Ответ 3
Простым способом является использование операторов if else
, поскольку проверка диапазона не разрешена для операции switch
. Другой сложный способ - использовать Dictionaries
. Ниже приведен фрагмент кода - это демонстрация того, что вы хотите, используя второй подход.
decimal myVal = decimal.Parse(PostDiscountCostTextBox.Text);
var conditions = new Dictionary<Func<int, bool>, Action>
{
{ x => x > 0 && x <= 999 , () => Console.WriteLine("This amount qualifies for 'A-100' frequent flier miles.") } ,
{ x => x > 999 , () => Console.WriteLine("Dummy!") } ,
};
cases.First(kvp => kvp.Key(myNum)).Value();
Не так просто, как подход if else
, но требует теста.