Поиск…


Синтаксис

  • Счетчик public As Integer
  • Частный _counter As Integer
  • Dim counter As Integer

Объявление и назначение переменной с использованием примитивного типа

Переменные в Visual Basic объявляются с использованием ключевого слова Dim . Например, это объявляет новую переменную с именем counter с типом данных Integer :

Dim counter As Integer

Объявление переменной может также включать модификатор доступа , такой как Public , Protected , Friend или Private . Это работает в сочетании с областью переменной для определения ее доступности.

Модификатор доступа Имея в виду
общественного Все типы, которые могут получить доступ к закрытому типу
защищенный Только охватывающий класс и те, которые наследуют его
Друг Все типы в той же сборке, которые могут получить доступ к закрывающему типу
Защищенный друг Класс включения и его наследники или типы в той же сборке, которые могут получить доступ к закрывающему классу
Частный Только закрытый тип
статический Только по локальным переменным и только инициализирует один раз.

В качестве сокращения ключевое слово Dim может быть заменено модификатором доступа в объявлении переменной:

Public TotalItems As Integer
Private counter As Integer

Поддерживаемые типы данных приведены в таблице ниже:

Тип кличка Выделение памяти пример
SByte N / A 1 байт Dim example As SByte = 10
Int16 короткий 2 байта Dim example As Short = 10
Int32 целое число 4 байта Dim example As Integer = 10
Int64 Долго 8 байт Dim example As Long = 10
не замужем N / A 4 байта Dim example As Single = 10.95
двойной N / A 8 байт Dim example As Double = 10.95
Десятичный N / A 16 байт Dim example As Decimal = 10.95
логический N / A Диктуется внедрением платформы Dim example As Boolean = True
голец N / A 2 байта Dim example As Char = "A"C
строка N / A формула источник Dim example As String = "Stack Overflow"
DateTime Дата 8 байт Dim example As Date = Date.Now
Байт N / A 1 байт Dim example As Byte = 10
UInt16 UShort 2 байта Dim example As UShort = 10
UInt32 UInteger 4 байта Dim example As UInteger = 10
UInt64 ULong 8 байт Dim example As ULong = 10
объект N / A 4 байта 32-битная архитектура, 8 байт 64-битная архитектура Dim example As Object = Nothing

Также существуют идентификаторы данных и символы литерала, используемые для замены текстового типа и для принудительного типа литерала:

Тип (или псевдоним) Идентификатор типа Литеральный тип
короткий N / A example = 10S
целое число Dim example% example = 10% или example = 10I
Долго Dim example& example = 10& или example = 10L
не замужем Dim example! example = 10! или example = 10F
двойной Dim example# example = 10# или example = 10R
Десятичный Dim example@ example = 10@ или example = 10D
голец N / A example = "A"C
строка Dim example$ N / A
UShort N / A example = 10US
UInteger N / A example = 10UI
ULong N / A example = 10UL

Интегральные суффиксы также можно использовать с шестнадцатеричными (& H) или восьмеричными (& O) префиксами:
example = &H8000S или example = &O77&

Объекты Date (Time) также могут быть определены с использованием литерального синтаксиса:
Dim example As Date = #7/26/2016 12:8 PM#

Как только переменная объявлена, она будет существовать в пределах Области содержащего типа, Sub или Function объявленной в качестве примера:

Public Function IncrementCounter() As Integer
    Dim counter As Integer = 0
    counter += 1

    Return counter
End Function

Переменная счетчика будет существовать только до End Function а затем будет недоступна. Если эта переменная счетчика необходима вне функции, вам нужно будет определить ее на уровне класса / структуры или модуля.

Public Class ExampleClass

    Private _counter As Integer
   
    Public Function IncrementCounter() As Integer
       _counter += 1
       Return _counter
    End Function

End Class

Кроме того, вы можете использовать модификатор Static (не путать с Shared ), чтобы локальная переменная сохраняла его значение между вызовами его метода размещения:

Function IncrementCounter() As Integer
    Static counter As Integer = 0
    counter += 1

    Return counter
End Function

Уровни декларации - переменные локальные и переменные

Локальные переменные - те, которые объявлены в процедуре (подпрограмме или функции) класса (или другой структуры). В этом примере exampleLocalVariable является локальной переменной, объявленной в ExampleFunction() :

Public Class ExampleClass1

    Public Function ExampleFunction() As Integer
        Dim exampleLocalVariable As Integer = 3
        Return exampleLocalVariable
    End Function

End Class

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

В этом примере консоль равна 024 . При каждом вызове ExampleSub() из Main() статическая переменная сохраняет значение, ExampleSub() в конце предыдущего вызова:

Module Module1

    Sub Main()
        ExampleSub()
        ExampleSub()
        ExampleSub()
    End Sub

    Public Sub ExampleSub()
        Static exampleStaticLocalVariable As Integer = 0
        Console.Write(exampleStaticLocalVariable.ToString)
        exampleStaticLocalVariable += 2
    End Sub

End Module

Переменные участника - объявляются вне любой процедуры на уровне класса (или другой структуры). Они могут быть переменными экземпляра , в которых каждый экземпляр содержащего класса имеет свою собственную отдельную копию этой переменной или Shared variables , которые существуют как одна переменная, связанная с самим классом, независимо от любого экземпляра.

Здесь ExampleClass2 содержит две переменные-члены. Каждый экземпляр класса ExampleClass2 имеет отдельный ExampleInstanceVariable которому можно получить доступ через ссылку на класс. Однако доступ к общей переменной ExampleSharedVariable осуществляется с помощью имени класса:

Module Module1

    Sub Main()

        Dim instance1 As ExampleClass4 = New ExampleClass4
        instance1.ExampleInstanceVariable = "Foo"

        Dim instance2 As ExampleClass4 = New ExampleClass4
        instance2.ExampleInstanceVariable = "Bar"

        Console.WriteLine(instance1.ExampleInstanceVariable)
        Console.WriteLine(instance2.ExampleInstanceVariable)
        Console.WriteLine(ExampleClass4.ExampleSharedVariable)

    End Sub

    Public Class ExampleClass4

        Public ExampleInstanceVariable As String
        Public Shared ExampleSharedVariable As String = "FizzBuzz"

    End Class

End Module

Пример модификаторов доступа

В следующем примере рассмотрим, что у вас есть решение, в котором есть два проекта: ConsoleApplication1 и SampleClassLibrary . Первый проект будет иметь классы SampleClass1 и SampleClass2 . Второй будет иметь SampleClass3 и SampleClass4 . Другими словами, у нас есть две сборки с двумя классами каждый. ConsoleApplication1 имеет ссылку на SampleClassLibrary .

Смотрите, как SampleClass1.MethodA взаимодействует с другими классами и методами.

SampleClass1.vb:

Imports SampleClassLibrary

Public Class SampleClass1
    Public Sub MethodA()
        'MethodA can call any of the following methods because
        'they all are in the same scope.
        MethodB()
        MethodC()
        MethodD()
        MethodE()

        'Sample2 is defined as friend. It is accessible within
        'the type itself and all namespaces and code within the same assembly.
        Dim class2 As New SampleClass2() 
        class2.MethodA()
        'class2.MethodB() 'SampleClass2.MethodB is not accessible because
                          'this method is private. SampleClass2.MethodB
                          'can only be called from SampleClass2.MethodA,
                          'SampleClass2.MethodC, SampleClass2.MethodD
                          'and SampleClass2.MethodE
        class2.MethodC()
        'class2.MethodD() 'SampleClass2.MethodD is not accessible because
                          'this method is protected. SampleClass2.MethodD
                          'can only be called from any class that inherits
                          'SampleClass2, SampleClass2.MethodA, SampleClass2.MethodC,
                          'SampleClass2.MethodD and SampleClass2.MethodE
        class2.MethodE()

        Dim class3 As New SampleClass3() 'SampleClass3 resides in other
                                         'assembly and is defined as public.
                                         'It is accessible anywhere.
        class3.MethodA()
        'class3.MethodB() 'SampleClass3.MethodB is not accessible because
                          'this method is private. SampleClass3.MethodB can
                          'only be called from SampleClass3.MethodA,
                          'SampleClass3.MethodC, SampleClass3.MethodD
                          'and SampleClass3.MethodE

        'class3.MethodC() 'SampleClass3.MethodC is not accessible because
                          'this method is friend and resides in another assembly.
                          'SampleClass3.MethodC can only be called anywhere from the
                          'same assembly, SampleClass3.MethodA, SampleClass3.MethodB,
                          'SampleClass3.MethodD and SampleClass3.MethodE

        'class4.MethodD() 'SampleClass3.MethodE is not accessible because
                          'this method is protected friend. SampleClass3.MethodD
                          'can only be called from any class that resides inside
                          'the same assembly and inherits SampleClass3,
                          'SampleClass3.MethodA, SampleClass3.MethodB,
                          'SampleClass3.MethodC and SampleClass3.MethodD      

        'Dim class4 As New SampleClass4() 'SampleClass4 is not accessible because
                                          'it is defined as friend and resides in
                                          'other assembly.
    End Sub

    Private Sub MethodB()
        'Doing MethodB stuff...
    End Sub

    Friend Sub MethodC()
        'Doing MethodC stuff...
    End Sub

    Protected Sub MethodD()
        'Doing MethodD stuff...
    End Sub

    Protected Friend Sub MethodE()
        'Doing MethodE stuff...
    End Sub
End Class

SampleClass2.vb:

Friend Class SampleClass2
    Public Sub MethodA()
        'Doing MethodA stuff...
    End Sub

    Private Sub MethodB()
        'Doing MethodB stuff...
    End Sub

    Friend Sub MethodC()
        'Doing MethodC stuff...
    End Sub

    Protected Sub MethodD()
        'Doing MethodD stuff...
    End Sub

    Protected Friend Sub MethodE()
        'Doing MethodE stuff...
    End Sub
End Class

SampleClass3.vb:

Public Class SampleClass3
    Public Sub MethodA()
        'Doing MethodA stuff...
    End Sub
    Private Sub MethodB()
        'Doing MethodB stuff...
    End Sub

    Friend Sub MethodC()
        'Doing MethodC stuff...
    End Sub

    Protected Sub MethodD()
        'Doing MethodD stuff...
    End Sub

    Protected Friend Sub MethodE()
        'Doing MethodE stuff...
    End Sub
End Class

SampleClass4.vb:

Friend Class SampleClass4
    Public Sub MethodA()
        'Doing MethodA stuff...
    End Sub
    Private Sub MethodB()
        'Doing MethodB stuff...
    End Sub

    Friend Sub MethodC()
        'Doing MethodC stuff...
    End Sub

    Protected Sub MethodD()
        'Doing MethodD stuff...
    End Sub

    Protected Friend Sub MethodE()
        'Doing MethodE stuff...
    End Sub
End Class


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow