Нет, вероятно, никакого различия. IIRC, сгенерированный IL компилятора преобразовывает их обоих в Операторы возврата , если нет дополнительное использование _returnValue переменной .
удобочитаемость присвоения FunctionName плоха, по-моему, и пример плохой привычки VB6. Я предпочитаю _returnValue (НЕ RETVAL) переменный метод также.
Давайте смотреть... Странно "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
}
Выполнение следующего только обеспечивается для разработчики Visual Basic 6.0 для легкого портирования кода:
Public Function MyFunction() As String
MyFunction = "Hello"
End Function
я определенно не рекомендовал бы продолжать делать его, если Ваш проект включает кого-либо, кто не работал с Visual Basic 6.0, поскольку этот синтаксис будет сбивать с толку.
99 раз из 100 я буду использовать "возвращаемое значение".
Время от времени у меня будет функция, где другой тип не только позволяет мне сохранять объявление переменной, но и делать это способом, который на самом деле значительно разъясняет функцию. Обычно это происходит, когда я хотел бы назвать возвращаемое значение тем же как функцию так или иначе, и часто это рекурсивные функции; что-то о той конструкции предоставляет его неявной возвращаемой переменной. Однако тот сценарий чрезвычайно редок . Я не знаю, есть ли у меня какие-либо функции с помощью неявных возвращаемых переменных вообще в моем текущем проекте.
Разница в том, что они ДЕЛАЮТ РАЗНЫЕ ВЕЩИ!
«Возвращаемое значение» выполняет две функции:
1. Он устанавливает значение, возвращаемое функцией в этой точке.
2. Он немедленно выходит из функции
Никакой другой код в функции не выполняется!
«Имя функции = значение» выполняет одно действие: 1. Он устанавливает значение, возвращаемое функцией в этой точке
Другой код в функции продолжает выполняться. Это позволяет дополнительной логике уточнять или отменять возвращаемое значение функции
Огромная разница, ребята. Помните, что дело не только в состоянии, но и в потоке.