Возврат значений со ссылочными аргументами или по структуре - PullRequest
0 голосов
/ 10 июля 2009

В каких ситуациях лучше использовать ссылочные аргументы для возврата значений?


Sub Example(byref value as integer)
  value = 3
End Sub

В каких ситуациях лучше всего возвращать значение (возможно, в структуре для более сложных типов)?


Function Example() as integer
  return 3
End Function

Ответы [ 3 ]

1 голос
/ 10 июля 2009

В целом, я бы не использовал ссылочные аргументы для возврата значений.

Рекомендации по проектированию предлагают избегать этого, поэтому инструменты анализа кода Microsoft предупреждают вас, когда они его обнаруживают. Не передавайте типы по ссылке.

Почти всегда легче поддерживать значения, а не передавать аргументы по ссылке, если только в этом нет особой необходимости. Если вы генерируете новое значение, верните его.

1 голос
/ 10 июля 2009

, если вы хотите вернуть состояние или статус операции плюс результат операции.

думать о TryParse..it возвращает результат преобразования как true или false и возвращает преобразованное значение с помощью переменной ref.

 Dim number As Integer
 Dim result As Boolean = Int32.TryParse(value, number)


Public Shared Function TryParse ( _
    s As String, _
    <OutAttribute> ByRef result As Integer _
) As Boolean

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

0 голосов
/ 10 июля 2009

Это действительно зависит от того, что делает функция. Как правило, однако, если есть только один возврат, по значению проще для вызывающего. Они могут просто сделать:

int foo = Example(foo)

или

int modifiedFoo = Example(foo)

как они предпочитают.

...