2017-01-23 2 views
0

Я пишу коды C#, преобразованные из некоторых устаревших кодов VB. В VB коды от одной из функций:Множественный возврат в случае выбора VB

Private Function function1() As Double 

     Dim variable2 As Double = 0 

     If variable1 = 6 Then 
      Select Case variable3 
       Case Is <= 1500 : Return Constant1 
       Case Is <= 2000 : Return Constant2 
       Case Is <= 2500 : Return Constant3 
       Case Is <= 3000 : Return Constant4 
       Case Else : Return Constant5 
      End Select 
      variable2 = variable2 +3 
     End If 
     Return variable2 
End Function 

переменной 1, переменная 3 и все константы являются полями класса уровня. Кажется, что возвращаемое значение из переменной 2 после обработки внутри оператора If.

Может ли кто-нибудь сообщить, почему в заявлении о выборе есть несколько предложений возврата? Я предполагаю, что он присваивает постоянным значения переменной3 для будущих процессов, все согласны со мной?

+0

Он будет возвращать только одно значение, не все из них. Если значение 'variable3' равно <= 1500, оно вернет Constant1, если оно больше 1500 и меньше или равно 2000, оно вернет Constant2 и т. Д. – Tim

+0

Ваш код не будет компилироваться. 'Case Else: Constant5' недействителен. Можете ли вы показать нам фактический код, пожалуйста? Даже если он * сделал * компиляцию (и был 'return Constant5') - это означает, что части, относящиеся к' variable2', никогда не будут выполнены. – Rob

+0

Привет, ваши права, должны быть возвращены Constant5, я внесла поправки. – DennisL

ответ

2

Select Case является просто VB.NET эквивалент переключателя С # ... случай

https://msdn.microsoft.com/en-us/library/cy37t14y.aspx

Любое значение вы возвращаетесь в случае вернется из function1 себя.

Если есть возвращение во всех случаях, то утверждение:

variable2 = variable2 +3 

... недостижим и ...

Return variable2 

всегда возвращает 0.

+0

Спасибо, друг! Я думаю, что это ошибка в устаревших кодах. – DennisL

+0

@DennisL Если этот ответ (или другой) решил ваш вопрос, отметьте его как принятый. Благодаря! – Rob

0

I не думайте, что есть несколько возвратных переменных. Может быть ошибка, когда ваш код назначает

variable2 = variable2 +3 // Эта строка никогда не будет выполнена.

Для выполнения этой строки вам нужно назначить постоянное значение переменной2 вместо возврата из каждого случая.

Наконец, если variable1 не равно 6, то эта функция всегда возвращает 0.

Смежные вопросы