Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Вызов функции Добавлено: 25.02.06 12:59  

Автор вопроса:  Anton | ICQ: 308496507 

Ответить

  Ответы Всего ответов: 21  

Номер ответа: 16
Автор ответа:
 HOOLIGAN



Вопросов: 0
Ответов: 1066
 Профиль | | #16 Добавлено: 03.03.06 16:58
Если я правильно понял, это намек на то, что если я строчку передам ByVal, она все равно будет ByRef? Если да, то я скажу, что это неправда.


Строка в любом случае передается ByRef (адрес строки): либо адрес самой строки (если было использовано ByRef MyString), либо адрес копии строки (если было использовано ByVal MyString)

Посмотри вот этот пример:

Sub ByRefSub(s As String)
    Debug.Print "ByRef passed string " & s & " addr: " & StrPtr(s)
End Sub

Sub ByValSub(ByVal s As String)
    Debug.Print "ByVal passed string " & s & " addr: " & StrPtr(s)
End Sub

Private Sub Form_Load()
    Dim a As String
    a = "MYSTRING"
    Debug.Print "The original string " & a & " addr: " & StrPtr(a)
    ByRefSub a
    ByValSub a
End Sub


и тебе станет все ясно.
Только пожалуйста, не надо уподобляться некоторым товарищам, утверждающим, что передается строка целиком, а не её адрес, а то я совсем разочаруюсь в vb-программерах :)

Ответить

Номер ответа: 17
Автор ответа:
 HOOLIGAN



Вопросов: 0
Ответов: 1066
 Профиль | | #17 Добавлено: 03.03.06 17:06
Victor
Твой пример не модифицирует строку при передаче ByVal потому, что модификация (запись в неё слова byval) производится над копией строки, а проверка (модифицирована или нет) производится для оригинала...
Пенка-с...

Ответить

Номер ответа: 18
Автор ответа:
 Victor



ICQ: 345743490 

Вопросов: 42
Ответов: 385
 Web-сайт: vt-dbnz.narod.ru
 Профиль | | #18
Добавлено: 05.03.06 18:10
Короче. Вы мне внутренности рассказываете. А для программера, не знающего ни капли от внутренностей, это не важно. Ему это внешне как строка, переданная целиком. ByVal и ByRef работают именно так, как и заявлено (внешне): ByRef передает ссылку, ByVal передает копию. Как именно передает - это совсем другой вопрос.

Ответить

Номер ответа: 19
Автор ответа:
 HOOLIGAN



Вопросов: 0
Ответов: 1066
 Профиль | | #19 Добавлено: 05.03.06 19:42
И тот и другой способ передают ссылку.
Один на оригинал, другой на копию.

А когда "программеру" неважно, что и как происходит, получаются ситуации, когда модифицируется одна строка, а результат модификации проверяется совсем в другой строке.

Ответить

Номер ответа: 20
Автор ответа:
 Anton



ICQ: 308496507 

Вопросов: 2
Ответов: 12
 Профиль | | #20 Добавлено: 05.03.06 23:09
Это было трудно, но я дочитал все до конца,кое-что даже понял) а вот завтра я иду сдавать надеюсь последний раз...

Ответить

Номер ответа: 21
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #21 Добавлено: 06.03.06 10:42
Патамушта в газенваген!

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам