ByVal

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Ramauf
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 122
Зарегистрирован: 03.08.2003 (Вс) 21:10
Откуда: Кумертау

ByVal

Сообщение Ramauf » 12.12.2003 (Пт) 10:13

Что значит ByVal и для чего используется?

acoustic
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 09.12.2003 (Вт) 17:30

Сообщение acoustic » 12.12.2003 (Пт) 12:09

ByVal - By Value. Передает только значение переменной.
ByRef - By Reference. Передает ссылку (адрес) на переменную.

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Сообщение Vovik » 12.12.2003 (Пт) 13:16

Читай внимательно!!! :!:

Код: Выделить всё
Private Sub Form_Load()
  Dim x,y
  x = 3
  y = 5
  Call ByReference(x, y)
   ' Результат : x=4, y=6
 
  x = 3
  y = 5
  Call ByValue(x, y)
   ' Результат : x=4, y=5
End Sub

' Передача параметров по ссылке
Sub ByReference(a, b)
   a = a + 1
   b = b + 1
End Sub

' Передача параметров по значению
Sub ByValue(a, ByVal b)
   a = a + 1
   b = b + 1
End Sub
 

:arrow: После вызова процедуры ByValue изменяется значение переменной только x, а переменная y остаётся без изменений. Использование при описании параметра b служебного слова ByVal привело к тому, что в переменную y при выполнении процедуры ByValue не будет передано никакого значения. Во как! :wink:

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 12.12.2003 (Пт) 13:18

Небольшое замечание - объекты всегда передаются по ссылке (т.е. при использовании ByVal - будет создана копия ссылки, а не копия объекта). Т.е. объект - "ссылочный тип".

На этом иногда можно "запнуться", поэтому сразу же вношу замечание ;)
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

Ramauf
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 122
Зарегистрирован: 03.08.2003 (Вс) 21:10
Откуда: Кумертау

Сообщение Ramauf » 13.12.2003 (Сб) 22:10

Спасибо за инфу.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

    TopList