Возврат функции VB.NET

25
задан user50612 16 January 2009 в 16:31
поделиться

5 ответов

Нет, вероятно, никакого различия. IIRC, сгенерированный IL компилятора преобразовывает их обоих в Операторы возврата , если нет дополнительное использование _returnValue переменной .

удобочитаемость присвоения FunctionName плоха, по-моему, и пример плохой привычки VB6. Я предпочитаю _returnValue (НЕ RETVAL) переменный метод также.

14
ответ дан StingyJack 15 October 2019 в 14:54
поделиться

Давайте смотреть... Странно "functionName =" генерирует меньше IL?

Код:

Public Function Test() As String
    Test = "Test"
End Function


Public Function Test2() As String
    Return "Test"
End Function

IL:

.method public static string Test() cil managed
{
    .maxstack 1
    .locals init (
        [0] string Test)
    L_0000: nop 
    L_0001: ldstr "Test"
    L_0006: stloc.0 
    L_0007: ldloc.0 
    L_0008: ret 
}

.method public static string Test2() cil managed
{
    .maxstack 1
    .locals init (
        [0] string Test2)
    L_0000: nop 
    L_0001: ldstr "Test"
    L_0006: stloc.0 
    L_0007: br.s L_0009
    L_0009: ldloc.0 
    L_000a: ret 
}
17
ответ дан TGnat 15 October 2019 в 14:54
поделиться

Выполнение следующего только обеспечивается для разработчики Visual Basic 6.0 для легкого портирования кода:

Public Function MyFunction() As String
    MyFunction = "Hello"
End Function

я определенно не рекомендовал бы продолжать делать его, если Ваш проект включает кого-либо, кто не работал с Visual Basic 6.0, поскольку этот синтаксис будет сбивать с толку.

6
ответ дан Peter Mortensen 15 October 2019 в 14:54
поделиться

99 раз из 100 я буду использовать "возвращаемое значение".

Время от времени у меня будет функция, где другой тип не только позволяет мне сохранять объявление переменной, но и делать это способом, который на самом деле значительно разъясняет функцию. Обычно это происходит, когда я хотел бы назвать возвращаемое значение тем же как функцию так или иначе, и часто это рекурсивные функции; что-то о той конструкции предоставляет его неявной возвращаемой переменной. Однако тот сценарий чрезвычайно редок . Я не знаю, есть ли у меня какие-либо функции с помощью неявных возвращаемых переменных вообще в моем текущем проекте.

1
ответ дан Joel Coehoorn 15 October 2019 в 14:54
поделиться

Разница в том, что они ДЕЛАЮТ РАЗНЫЕ ВЕЩИ!

«Возвращаемое значение» выполняет две функции:
1. Он устанавливает значение, возвращаемое функцией в этой точке. 2. Он немедленно выходит из функции

Никакой другой код в функции не выполняется!

«Имя функции = значение» выполняет одно действие: 1. Он устанавливает значение, возвращаемое функцией в этой точке

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

Огромная разница, ребята. Помните, что дело не только в состоянии, но и в потоке.

52
ответ дан 28 November 2019 в 17:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: