VB.NET SELECT… оператор CASE эквивалентный в C#
-
20-09-2019 - |
Вопрос
Я только начал использовать C#, и у меня есть несколько проблем. Есть ли способ кодировать эквивалент C# из оператора VB.NET SELECT, например, следующее?
Select Object.Name.ToString()
Case "Name1"
'Do something
Case "Name2"
'Do something else
Case Else
'Do the default action
End Select
Любая помощь будет очень оценена.
Спасибо за ввод до сих пор, как насчет того, что если я подключу несколько элементов управления к одному обработчику событий, как и в следующем, и я хочу выполнить немного другое действие для каждого элемента управления:
Private Sub Button_Click(sender as Object, e as EventArgs) _
Handles button1.Click, Button2.Click
'do a general activity
Select CType(sender, Button).Name
Case button1.Name
'do something
Case button2.Name
'do something else
Case Else
'do the defalut action
End Select
End Sub
Есть ли способ сделать приведенный выше оператор SELECT в C# без необходимости использовать вложенные IFS?
Решение
Я пришел, чтобы найти со временем, что некоторые VB.net Select...Case
Конструкции не применяются в C#, и единственный способ обойти - это написать много IFS.
Например, в vb.net вы можете написать:
Dim num as Integer = 5
Select Case num
Case 1 to 10
'do something
Case 11 to 20
'do another thing
Case Else
'do the default
End Select
Но нет switch
Постройте в C#, который позволяет вам делать что -то в таком роде. Вам придется кодировать в кольцевой развязке, как так:
int num = 5;
switch (num)
{
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
//do something
break;
case 11:
case 12:
case 13:
case 14:
case 15:
case 16:
case 17:
case 18:
case 19:
case 20:
//do something else
break;
default:
//do the default
break;
}
Или если вы работаете с Double
или любой тип, который состоит из непрерывных, а не дискретных значений, вам придется использовать if
S, чтобы получить необходимое действие.
Причина? C#S switch
требуется постоянные для различных case
с Это отличается от VB.net Select Case
что позволяет писать диапазоны.
Другие советы
Вы будете искать оператор Switch ...
switch (Object.Name.ToString())
{
case "Name1":
//Do something
break;
default:
//default
break;
}
Обратите внимание, что перерывы являются импортом, в противном случае программа будет проходить через ваши случаи. Вы должны быть в состоянии найти это практически на любом введении C# ...
Использовать switch
утверждение.
switch (object.Name.ToString()) {
case "Name1":
break;
//Do something
case "Name2":
break;
//Do something else
default:
break;
//Do the default action
}
И не забывайте, что есть Бесплатный инструмент онлайн -конверсии Это позволяет конвертировать VB.NET в C# и наоборот.
С C# 7 Switch значительно улучшил, и теперь можно применить больше условий в случаях, хотя это все еще не так «чисто», как версия VB. Например, вы могли бы сделать что -то вроде:
switch (examScore)
{
case int es when es >= 90: grade = "A"; break;
case int es when es >= 80: grade = "B"; break;
case int es when es >= 70: grade = "C"; break;
case int es when es >= 60; grade = "D"; break;
default: grade = "F"; break;
}
Взято из / ссылок: