Вопрос

Я только начал использовать 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 или любой тип, который состоит из непрерывных, а не дискретных значений, вам придется использовать ifS, чтобы получить необходимое действие.

Причина? 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;
}

Взято из / ссылок:

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top