Отправляет email-рассылки с помощью сервиса Sendsay

Visual Basic.NET. Уроки

  Все выпуски  

Visual Basic.NET. Уроки


Информационный Канал Subscribe.Ru

Основы VB.NET. Уроки с сайта http://progs.biz

Рассылка №22

Основы VB.NET. Урок 25. Передача данных по значению и по ссылке.

Полные версии уроков (с картинками) можно найти по адресам
Урок 25. Передача данных по значению и по ссылке.

Основы VB.NET. Урок 25. Передача данных по значению и по ссылке

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

Вот полный пример, поясняющий все вышеизложенное:

Imports System
Module Test
    Function f1(ByVal a As Integer, ByRef b As Integer) As Integer
        a = a + 1
        b = b + 1
        Return 0
    End Function
    Sub main()
        Dim n, m As Integer
        n = 4
        m = 4
        f1(n, m)
        Console.WriteLine("{0}, {1}", n, m)
    End Sub
End Module

Результатом выполнения этой программы будет 4 и 5. Действительно, выполение программы начинается с метода main нашего модуля Test. В нем мы объявляем две переменные n и m типа Integer и присваиваем им значение 4. Далее вызывается функция f1, внутри которой первый и второй передаваемый параметры увеличиваются на 1. Так как первый параметр функции объявлен с модификатором ByVal, то в функцию передается только его копия, второй же параметр передается с модификатором ByRef, т. е. передается его оригинал. Таким образом вызываемая функция f1 увеличивает на 1 только переменную m.

Вот еще пример. Процедура Swap меняет значения своих параметров:

Module Test
    Sub Swap(ByRef a As Integer, ByRef b As Integer)
        'Объявляем переменную t для обмена
        Dim t As Integer
        t = a
        a = b
        b = t
    End Sub
    Sub main()
        Dim n, m As Integer
        n = 4
        m = 14
        Console.WriteLine("{0}, {1}", n, m) 'Напечатается 4 и 14
        Swap(n, m)
        Console.WriteLine("{0}, {1}", n, m) 'Напечатается 14 и 4
    End Sub
End Module

Оба параметра (a и b) передаются в процедуру с ключевым словом ByRef, так что процедура меняет местами значения именно самих передаваемых переменных, а не их копий. Кстати говоря, в такую процедуру (или функцию) можно передавать как переменные, так и конкретные значения:

    ...
    Swap(n, 30)
    ...

В приведенном примере n приобретет значение 30.

Наверх

Рассылки с сайта progs.biz

Рассылки Subscribe.Ru
Уроки по C# и .NET.

Уроки по C# -новому языку от Microsoft для платформы .NET. Создание разных типов приложений (консольные, для Windows, веб-приложения), работа с базами данных, создание собственных компонентов. Примеры, исходники, статьи, FAQ.


Copyright Алексеев Игорь, 2002

Copyright сайт progs.biz, 2002



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное