Visual Basic .NET Language
변수 선언하기
수색…
통사론
- 공용 카운터 As Integer
- 개인 _ 카운터는 정수로
- 정수로 희미한 카운터
프리미티브 타입을 사용하여 변수 선언 및 지정
Visual Basic의 변수는 Dim
키워드를 사용하여 선언됩니다. 예를 들어, 다음은 Integer
데이터 유형의 counter
라는 새 변수를 선언합니다.
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" |
날짜 시간 | 날짜 | 8 바이트 | Dim example As Date = Date.Now |
바이트 | N / A | 1 바이트 | Dim example As Byte = 10 |
UInt16 | 권장 사항 | 2 바이트 | Dim example As UShort = 10 |
UInt32 | UInteger | 4 바이트 | Dim example As UInteger = 10 |
UInt64 | 울롱 | 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 |
권장 사항 | N / A | example = 10US |
UInteger | N / A | example = 10UI |
울롱 | N / A | example = 10UL |
정수 접미사는 16 진수 (& H) 또는 8 진수 (& O) 접두어로 사용할 수도 있습니다.
example = &H8000S
또는 example = &O77&
Date (Time) 객체는 리터럴 구문을 사용하여 정의 할 수도 있습니다.
Dim example As Date = #7/26/2016 12:8 PM#
변수가 선언되면 Sub
또는 Function
선언 된 포함 유형의 Scope 내에 존재합니다.
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
입니다. Main()
ExampleSub()
에서 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
인스턴스 독립적 클래스 자체와 연관된 하나의 변수로서 존재할 변수.
여기서 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