Вопрос

Как я понимаю, C # проходит параметры в методы посредством ссылки. В VB.NET вы можете указать это с byval и byref. По умолчанию Byval.

Это для совместимости с Visual Basic 6.0, или это просто случайно? Кроме того, как я могу указать, что использовать в C #? Я вроде как идею прохождения параметров по значению.

Это было полезно?

Решение

Параметры в C #, по По умолчанию пропущено по значению. Нет модификатора, чтобы сделать этот явный, но если вы добавите ref / out Параметр является ссылкой.

Обычная путаница здесь - это разница между:

  • Прохождение типа Value по значению (изменения в типов значений не видны вызывающему абоненту, но типы значений в любом случае должны быть неизменными)
  • Передача типов значений посредством ссылки (изменения в типе значений видны вызывающему абоненту, но значения значения в любом случае должны быть неизменными - так важны, я скажу это дважды; P)
  • передача ссылки по значению (изменения в Поля / Свойства из Ref-Type виден вызывающим абонентом, но переназначение Тип Ref для нового / разного объекта нет видимый
  • Прохождение ссылки посредством ссылки (изменения в полях / свойствах, а также Переназначение ссылки видна звонящему)

Другие советы

Прохождение по значению - это значение по умолчанию в C #. Тем не менее, если передается переменная типа ссылочного типа, вы передаете ссылка по стоимости. Это, возможно, происхождение вашей путаницы.

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

Параметры в C # передаются «Byval» по умолчанию. Вы должны указать «ref» или «OUT», если вы хотите разное поведение.

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