Dim 문(Visual Basic)Dim Statement (Visual Basic)

하나 이상의 변수에 대 한 저장소 공간을 선언 하 고 할당 합니다.Declares and allocates storage space for one or more variables.

구문Syntax

[ <attributelist> ] [ accessmodifier ] [[ Shared ] [ Shadows ] | [ Static ]] [ ReadOnly ]
Dim [ WithEvents ] variablelist

요소Parts

선택 사항입니다.Optional. 이러한 개체 변수가 이벤트를 발생 시킬 수 있는 클래스의 인스턴스를 참조 하도록 지정 합니다.Specifies that these are object variables that refer to instances of a class that can raise events. WithEvents를 참조 하세요.See WithEvents.

  • variablelist

    필수 요소.Required. 이 문에서 선언 되는 변수의 목록입니다.List of variables being declared in this statement.

    variable [ , variable ... ]

    variable에는 다음과 같은 구문과 요소가 있습니다.Each variable has the following syntax and parts:

    variablename [ ( [ boundslist ] ) ] [ As [ New ] datatype [ With{[ .propertyname = propinitializer [ , ... ] ] } ] ] [ = initializer ]variablename [ ( [ boundslist ] ) ] [ As [ New ] datatype [ With{[ .propertyname = propinitializer [ , ... ] ] } ] ] [ = initializer ]

    부분Part 설명Description
    variablename 필수 요소.Required. 변수의 이름입니다.Name of the variable. Declared Element Names을 참조하세요.See Declared Element Names.
    boundslist 선택 사항입니다.Optional. 배열 변수의 각 차원에 대 한 범위 목록입니다.List of bounds of each dimension of an array variable.
    New 선택 사항입니다.Optional. Dim 문이 실행 될 때 클래스의 새 인스턴스를 만듭니다.Creates a new instance of the class when the Dim statement runs.
    datatype 선택 사항입니다.Optional. 변수의 데이터 형식입니다.Data type of the variable.
    With 선택 사항입니다.Optional. 개체 이니셜라이저 목록을 소개 합니다.Introduces the object initializer list.
    propertyname 선택 사항입니다.Optional. 인스턴스를 만드는 클래스의 속성 이름입니다.The name of a property in the class you are making an instance of.
    propinitializer propertyname = 이후에 필요 합니다.Required after propertyname =. 평가 되 고 속성 이름에 할당 되는 식입니다.The expression that is evaluated and assigned to the property name.
    initializer New 지정 되지 않은 경우 선택 사항입니다.Optional if New is not specified. 식이 생성 될 때 계산 되어 변수에 할당 되는 식입니다.Expression that is evaluated and assigned to the variable when it is created.

설명Remarks

Visual Basic 컴파일러는 Dim 문을 사용 하 여 변수의 데이터 형식 및 변수에 액세스할 수 있는 코드와 같은 기타 정보를 확인 합니다.The Visual Basic compiler uses the Dim statement to determine the variable's data type and other information, such as what code can access the variable. 다음 예에서는 Integer 값을 포함 하는 변수를 선언 합니다.The following example declares a variable to hold an Integer value.

Dim numberOfStudents As Integer

모든 데이터 형식 또는 열거형, 구조체, 클래스 또는 인터페이스의 이름을 지정할 수 있습니다.You can specify any data type or the name of an enumeration, structure, class, or interface.

Dim finished As Boolean
Dim monitorBox As System.Windows.Forms.Form

참조 형식의 경우 New 키워드를 사용 하 여 데이터 형식으로 지정 된 클래스 또는 구조체의 새 인스턴스를 만듭니다.For a reference type, you use the New keyword to create a new instance of the class or structure that is specified by the data type. New사용 하는 경우 이니셜라이저 식을 사용 하지 않습니다.If you use New, you do not use an initializer expression. 대신, 필요한 경우 변수를 만들 클래스의 생성자에 인수를 제공 합니다.Instead, you supply arguments, if they are required, to the constructor of the class from which you are creating the variable.

Dim bottomLabel As New System.Windows.Forms.Label

프로시저, 블록, 클래스, 구조체 또는 모듈에서 변수를 선언할 수 있습니다.You can declare a variable in a procedure, block, class, structure, or module. 소스 파일, 네임 스페이스 또는 인터페이스에서는 변수를 선언할 수 없습니다.You cannot declare a variable in a source file, namespace, or interface. 자세한 내용은 선언 컨텍스트 및 기본 액세스 수준을 참조하세요.For more information, see Declaration Contexts and Default Access Levels.

프로시저 외부에서 모듈 수준에 선언 된 변수는 멤버 변수 또는 필드입니다.A variable that is declared at module level, outside any procedure, is a member variable or field. 멤버 변수는 클래스, 구조체 또는 모듈 전체의 범위에 있습니다.Member variables are in scope throughout their class, structure, or module. 프로시저 수준에서 선언 된 변수는 지역 변수입니다.A variable that is declared at procedure level is a local variable. 지역 변수는 해당 프로시저 또는 블록 내 에서만 범위 내에 있습니다.Local variables are in scope only within their procedure or block.

프로시저 외부에서 변수를 선언 하는 데 사용 되는 액세스 한정자는 Public, Protected, Friend, Protected FriendPrivate입니다.The following access modifiers are used to declare variables outside a procedure: Public, Protected, Friend, Protected Friend, and Private. 자세한 내용은 Visual Basic의 액세스 수준을 참조 하세요.For more information, see Access levels in Visual Basic.

Dim 키워드는 선택 사항이 며, Public, Protected, Friend, Protected Friend, Private, Shared, Shadows, Static, ReadOnly또는 WithEvents한정자를 지정 하는 경우 일반적으로 생략 됩니다.The Dim keyword is optional and usually omitted if you specify any of the following modifiers: Public, Protected, Friend, Protected Friend, Private, Shared, Shadows, Static, ReadOnly, or WithEvents.

Public maximumAllowed As Double
Protected Friend currentUserName As String
Private salary As Decimal
Static runningTotal As Integer

Option Explicit on (기본값) 이면 컴파일러에서 사용 하는 모든 변수에 대 한 선언이 필요 합니다.If Option Explicit is on (the default), the compiler requires a declaration for every variable you use. 자세한 내용은 Option Explicit 문을 참조 하세요.For more information, see Option Explicit Statement.

초기 값 지정Specifying an Initial Value

변수를 만들 때 변수에 값을 할당할 수 있습니다.You can assign a value to a variable when it is created. 값 형식의 경우 이니셜라이저 를 사용 하 여 변수에 할당 되는 식을 제공 합니다.For a value type, you use an initializer to supply an expression to be assigned to the variable. 식은 컴파일 시간에 계산 될 수 있는 상수로 계산 되어야 합니다.The expression must evaluate to a constant that can be calculated at compile time.

Dim quantity As Integer = 10
Dim message As String = "Just started"

이니셜라이저가 지정 되 고 As 절에서 데이터 형식이 지정 되지 않은 경우 형식 유추 를 사용 하 여 이니셜라이저의 데이터 형식을 유추 합니다.If an initializer is specified and a data type is not specified in an As clause, type inference is used to infer the data type from the initializer. 다음 예제에서는 num1num2 모두 정수로 강력 하 게 형식화 되어 있습니다.In the following example, both num1 and num2 are strongly typed as integers. 두 번째 선언에서 형식 유추는 값 3에서 형식을 유추 합니다.In the second declaration, type inference infers the type from the value 3.

' Use explicit typing.
Dim num1 As Integer = 3

' Use local type inference.
Dim num2 = 3

형식 유추는 프로시저 수준에서 적용 됩니다.Type inference applies at the procedure level. 클래스, 구조체, 모듈 또는 인터페이스의 프로시저 외부에는 적용 되지 않습니다.It does not apply outside a procedure in a class, structure, module, or interface. 형식 유추에 대 한 자세한 내용은 Option 유추 문지역 형식 유추를 참조 하세요.For more information about type inference, see Option Infer Statement and Local Type Inference.

데이터 형식 또는 이니셜라이저가 지정 되지 않은 경우 발생 하는 상황에 대 한 자세한 내용은이 항목의 뒷부분에 나오는 기본 데이터 형식 및 값 을 참조 하십시오.For information about what happens when a data type or initializer is not specified, see Default Data Types and Values later in this topic.

개체 이니셜라이저 를 사용 하 여 명명 된 형식과 익명 형식의 인스턴스를 선언할 수 있습니다.You can use an object initializer to declare instances of named and anonymous types. 다음 코드는 Student 클래스의 인스턴스를 만들고 개체 이니셜라이저를 사용 하 여 속성을 초기화 합니다.The following code creates an instance of a Student class and uses an object initializer to initialize properties.

Dim student1 As New Student With {.First = "Michael",
                                  .Last = "Tucker"}

개체 이니셜라이저에 대 한 자세한 내용은 방법: 개체 이니셜라이저를 사용 하 여 개체 선언, 개체 이니셜라이저: 명명 된 형식과 익명 형식익명 형식을 참조 하세요.For more information about object initializers, see How to: Declare an Object by Using an Object Initializer, Object Initializers: Named and Anonymous Types, and Anonymous Types.

여러 변수 선언Declaring Multiple Variables

하나의 선언문에서 여러 변수를 선언 하 고 각각에 대 한 변수 이름을 지정 하 고 괄호를 사용 하 여 각 배열 이름을 지정할 수 있습니다.You can declare several variables in one declaration statement, specifying the variable name for each one, and following each array name with parentheses. 여러 변수는 쉼표로 구분됩니다.Multiple variables are separated by commas.

Dim lastTime, nextTime, allTimes() As Date

하나의 As 절을 사용 하 여 둘 이상의 변수를 선언 하는 경우 해당 변수 그룹에 대 한 이니셜라이저를 제공할 수 없습니다.If you declare more than one variable with one As clause, you cannot supply an initializer for that group of variables.

선언 하는 각 변수에 대해 별도의 As 절을 사용 하 여 서로 다른 변수에 대해 서로 다른 데이터 형식을 지정할 수 있습니다.You can specify different data types for different variables by using a separate As clause for each variable you declare. 각 변수는 variablename 파트 다음에 발생 하는 첫 번째 As 절에 지정 된 데이터 형식을 사용 합니다.Each variable takes the data type specified in the first As clause encountered after its variablename part.

Dim a, b, c As Single, x, y As Double, i As Integer
' a, b, and c are all Single; x and y are both Double

배열Arrays

여러 값이 포함 될 수 있는 배열을포함 하는 변수를 선언할 수 있습니다.You can declare a variable to hold an array, which can hold multiple values. 변수가 배열을 포함 하도록 지정 하려면 괄호를 사용 하 여 해당 variablename을 즉시 수행 합니다.To specify that a variable holds an array, follow its variablename immediately with parentheses. 배열에 대한 자세한 내용은 배열을 참조하세요.For more information about arrays, see Arrays.

배열의 각 차원에 대 한 하 한과 상한을 지정할 수 있습니다.You can specify the lower and upper bound of each dimension of an array. 이렇게 하려면 괄호 안에 boundslist를 포함 합니다.To do this, include a boundslist inside the parentheses. 각 차원에 대해 boundslist 상한을 지정 하 고 선택적으로 하 한을 지정 합니다.For each dimension, the boundslist specifies the upper bound and optionally the lower bound. 지정 여부에 관계 없이 하한값은 항상 0입니다.The lower bound is always zero, whether you specify it or not. 각 인덱스는 0부터 상한 값까지 달라질 수 있습니다.Each index can vary from zero through its upper bound value.

다음 두 문은 동일 합니다.The following two statements are equivalent. 각 문은 21 Integer 요소 배열을 선언 합니다.Each statement declares an array of 21 Integer elements. 배열에 액세스할 때 인덱스는 0부터 20까지 달라질 수 있습니다.When you access the array, the index can vary from 0 through 20.

Dim totals(20) As Integer
Dim totals(0 To 20) As Integer

다음 문은 Double형식의 2 차원 배열을 선언 합니다.The following statement declares a two-dimensional array of type Double. 배열에는 각각 6 개의 행 (5 + 1)이 있습니다 (5 + 1).The array has 4 rows (3 + 1) of 6 columns (5 + 1) each. 상한은 차원의 길이가 아니라 인덱스에 사용할 수 있는 가장 높은 값을 나타냅니다.Note that an upper bound represents the highest possible value for the index, not the length of the dimension. 차원의 길이는 상한에 1을 더한 값입니다.The length of the dimension is the upper bound plus one.

Dim matrix2(3, 5) As Double

배열은 1 ~ 32 차원을 포함할 수 있습니다.An array can have from 1 to 32 dimensions.

배열 선언에서 모든 범위를 비워 둘 수 있습니다.You can leave all the bounds blank in an array declaration. 이렇게 하면 배열에 지정 된 차원 수가 있지만 초기화 되지 않습니다.If you do this, the array has the number of dimensions you specify, but it is uninitialized. 하나 이상의 요소를 초기화할 때까지 Nothing 값이 있습니다.It has a value of Nothing until you initialize at least some of its elements. Dim 문은 모든 차원에 대해 범위를 지정 하거나 차원 없이 범위를 지정 해야 합니다.The Dim statement must specify bounds either for all dimensions or for no dimensions.

' Declare an array with blank array bounds.
Dim messages() As String
' Initialize the array.
ReDim messages(4)

배열에 둘 이상의 차원이 있는 경우 괄호 사이에 쉼표를 포함 하 여 차원 수를 나타내야 합니다.If the array has more than one dimension, you must include commas between the parentheses to indicate the number of dimensions.

Dim oneDimension(), twoDimensions(,), threeDimensions(,,) As Byte

배열의 차원 중 하나를-1로 선언 하 여 길이가 0 인 배열을 선언할 수 있습니다.You can declare a zero-length array by declaring one of the array's dimensions to be -1. 길이가 0 인 배열을 포함 하는 변수는 Nothing값을 포함 하지 않습니다.A variable that holds a zero-length array does not have the value Nothing. 특정 공용 언어 런타임 함수에는 길이가 0 인 배열이 필요 합니다.Zero-length arrays are required by certain common language runtime functions. 이러한 배열에 액세스 하려고 하면 런타임 예외가 발생 합니다.If you try to access such an array, a runtime exception occurs. 자세한 내용은 배열을 참조하세요.For more information, see Arrays.

배열 리터럴을 사용 하 여 배열 값을 초기화할 수 있습니다.You can initialize the values of an array by using an array literal. 이렇게 하려면 초기화 값을 중괄호 ({})로 묶습니다.To do this, surround the initialization values with braces ({}).

Dim longArray() As Long = {0, 1, 2, 3}

다차원 배열의 경우 각 개별 차원에 대 한 초기화는 외부 차원에서 중괄호로 묶입니다.For multidimensional arrays, the initialization for each separate dimension is enclosed in braces in the outer dimension. 요소는 행 중심 순서로 지정 됩니다.The elements are specified in row-major order.

Dim twoDimensions(,) As Integer = {{0, 1, 2}, {10, 11, 12}}

배열 리터럴에 대 한 자세한 내용은 배열을 참조 하세요.For more information about array literals, see Arrays.

기본 데이터 형식 및 값Default Data Types and Values

다음 테이블에는 Dim 문에서 데이터 형식과 이니셜라이저를 지정하는 다양한 조합의 결과에 대한 설명이 나와 있습니다.The following table describes the results of various combinations of specifying the data type and initializer in a Dim statement.

데이터 형식 지정 여부Data type specified? 이니셜라이저 지정 여부Initializer specified? 예제Example 결과Result
아니요No 아니요No Dim qty Option Strict 가 off (기본값) 이면 변수가 Nothing로 설정 됩니다.If Option Strict is off (the default), the variable is set to Nothing.

Option Strict가 on이면 컴파일 시간 오류가 발생합니다.If Option Strict is on, a compile-time error occurs.
아니요No Yes Dim qty = 5 유추 옵션 (기본값)이 설정 된 경우 변수는 이니셜라이저의 데이터 형식을 사용 합니다.If Option Infer is on (the default), the variable takes the data type of the initializer. 지역 형식 유추를 참조 하세요.See Local Type Inference.

Option Infer가 off이고 Option Strict고 off이면 변수가 Object의 데이터 형식을 사용합니다.If Option Infer is off and Option Strict is off, the variable takes the data type of Object.

Option Infer가 off이고 Option Strict는 on이면 컴파일 시간 오류가 발생합니다.If Option Infer is off and Option Strict is on, a compile-time error occurs.
Yes 아니요No Dim qty As Integer 변수는 데이터 형식의 기본값으로 초기화됩니다.The variable is initialized to the default value for the data type. 이 단원의 뒷부분에 나오는 표를 참조 하세요.See the table later in this section.
Yes Yes Dim qty As Integer = 5 이니셜라이저의 데이터 형식을 지정한 데이터 형식으로 변환할 수 없으면 컴파일 시간 오류가 발생합니다.If the data type of the initializer is not convertible to the specified data type, a compile-time error occurs.

데이터 형식을 지정 하지만 이니셜라이저를 지정 하지 않는 경우 Visual Basic는 변수를 해당 데이터 형식에 대 한 기본값으로 초기화 합니다.If you specify a data type but do not specify an initializer, Visual Basic initializes the variable to the default value for its data type. 다음 표에서는 기본 초기화 값을 보여 줍니다.The following table shows the default initialization values.

데이터 형식Data type 기본값Default value
모든 숫자 형식 (ByteSByte포함)All numeric types (including Byte and SByte) 00
Char 이진 0Binary 0
모든 참조 형식 (Object, String및 모든 배열 포함)All reference types (including Object, String, and all arrays) Nothing
Boolean False
Date 1 년 1 월 1 일 오전 12:00 (01/01/0001 12:00:00 AM)12:00 AM of January 1 of the year 1 (01/01/0001 12:00:00 AM)

구조체의 각 요소는 개별 변수인 것 처럼 초기화 됩니다.Each element of a structure is initialized as if it were a separate variable. 배열의 길이를 선언 하지만 요소를 초기화 하지 않는 경우 각 요소는 개별 변수인 것 처럼 초기화 됩니다.If you declare the length of an array but do not initialize its elements, each element is initialized as if it were a separate variable.

정적 지역 변수 수명Static Local Variable Lifetime

Static 지역 변수가 선언 된 프로시저 보다 수명이 깁니다.A Static local variable has a longer lifetime than that of the procedure in which it is declared. 변수의 수명 범위는 프로시저가 선언 되는 위치와 Shared여부에 따라 달라 집니다.The boundaries of the variable's lifetime depend on where the procedure is declared and whether it is Shared.

프로시저 선언Procedure declaration 변수가 초기화 됨Variable initialized 변수가 기존에 중지 됨Variable stops existing
모듈에서In a module 프로시저가 처음 호출 될 때The first time the procedure is called 프로그램 실행이 중지 되는 경우When your program stops execution
클래스 또는 구조체에서 프로시저는 SharedIn a class or structure, procedure is Shared 프로시저가 특정 인스턴스나 클래스 또는 구조체 자체에서 처음 호출 될 때The first time the procedure is called either on a specific instance or on the class or structure itself 프로그램 실행이 중지 되는 경우When your program stops execution
클래스 또는 구조체에서는 프로시저가 Shared 되지 않습니다.In a class or structure, procedure isn't Shared 프로시저가 특정 인스턴스에서 처음으로 호출 될 때The first time the procedure is called on a specific instance GC (가비지 수집)를 위해 인스턴스를 해제 하는 경우When the instance is released for garbage collection (GC)

특성 및 한정자Attributes and Modifiers

지역 변수가 아니라 멤버 변수에만 특성을 적용할 수 있습니다.You can apply attributes only to member variables, not to local variables. 특성은 어셈블리의 메타 데이터에 정보를 제공 하며,이는 로컬 변수와 같은 임시 저장소에는 의미가 없습니다.An attribute contributes information to the assembly's metadata, which is not meaningful for temporary storage such as local variables.

모듈 수준에서 Static 한정자를 사용 하 여 멤버 변수를 선언할 수 없습니다.At module level, you cannot use the Static modifier to declare member variables. 프로시저 수준에서 Shared, Shadows, ReadOnly, WithEvents또는 액세스 한정자를 사용 하 여 지역 변수를 선언할 수 없습니다.At procedure level, you cannot use Shared, Shadows, ReadOnly, WithEvents, or any access modifiers to declare local variables.

accessmodifier를 제공 하 여 변수에 액세스할 수 있는 코드를 지정할 수 있습니다.You can specify what code can access a variable by supplying an accessmodifier. 클래스 및 모듈 멤버 변수 (프로시저 외부)는 기본적으로 private access로, 구조체 멤버 변수의 기본값은 공용 액세스입니다.Class and module member variables (outside any procedure) default to private access, and structure member variables default to public access. 액세스 한정자를 사용 하 여 액세스 수준을 조정할 수 있습니다.You can adjust their access levels with the access modifiers. 프로시저 내에서 지역 변수에 액세스 한정자를 사용할 수 없습니다.You cannot use access modifiers on local variables (inside a procedure).

프로시저 내의 지역 변수가 아니라 멤버 변수에 대해서만 WithEvents 지정할 수 있습니다.You can specify WithEvents only on member variables, not on local variables inside a procedure. WithEvents지정 하는 경우 변수의 데이터 형식은 Object이 아닌 특정 클래스 형식 이어야 합니다.If you specify WithEvents, the data type of the variable must be a specific class type, not Object. WithEvents를 사용 하 여 배열을 선언할 수 없습니다.You cannot declare an array with WithEvents. 이벤트에 대 한 자세한 내용은 이벤트를 참조 하세요.For more information about events, see Events.

참고

클래스, 구조체 또는 모듈 외부의 코드는 멤버 변수의 이름을 해당 클래스, 구조체 또는 모듈의 이름으로 한 정해야 합니다.Code outside a class, structure, or module must qualify a member variable's name with the name of that class, structure, or module. 프로시저 또는 블록 외부의 코드는 해당 프로시저나 블록 내의 지역 변수를 참조할 수 없습니다.Code outside a procedure or block cannot refer to any local variables within that procedure or block.

관리 되는 리소스 해제Releasing Managed Resources

.NET Framework 가비지 수집기는 파트에서 추가 코딩 없이 관리 되는 리소스를 삭제 합니다.The .NET Framework garbage collector disposes of managed resources without any extra coding on your part. 그러나 가비지 수집기를 대기 하지 않고 관리 되는 리소스를 강제로 삭제할 수 있습니다.However, you can force the disposal of a managed resource instead of waiting for the garbage collector.

클래스에서 특히 중요 하 고 부족 한 리소스 (예: 데이터베이스 연결 또는 파일 핸들)를 사용 하는 경우 더 이상 사용 하지 않는 클래스 인스턴스를 정리할 다음 가비지 수집이 끝날 때까지 기다리지 않으려고 할 수 있습니다.If a class holds onto a particularly valuable and scarce resource (such as a database connection or file handle), you might not want to wait until the next garbage collection to clean up a class instance that's no longer in use. 클래스는 가비지 수집 전에 리소스를 해제 하는 방법을 제공 하기 위해 IDisposable 인터페이스를 구현할 수 있습니다.A class may implement the IDisposable interface to provide a way to release resources before a garbage collection. 해당 인터페이스를 구현 하는 클래스는 중요 한 리소스를 즉시 해제 하도록 호출할 수 있는 Dispose 메서드를 노출 합니다.A class that implements that interface exposes a Dispose method that can be called to force valuable resources to be released immediately.

Using 문은 리소스를 확보 하 고, 문 집합을 실행 한 다음 리소스를 삭제 하는 프로세스를 자동화 합니다.The Using statement automates the process of acquiring a resource, executing a set of statements, and then disposing of the resource. 그러나 리소스는 IDisposable 인터페이스를 구현 해야 합니다.However, the resource must implement the IDisposable interface. 자세한 내용은 using 문을 참조하세요.For more information, see Using Statement.

예제Example

다음 예에서는 다양 한 옵션과 함께 Dim 문을 사용 하 여 변수를 선언 합니다.The following example declares variables by using the Dim statement with various options.

' Declare and initialize a Long variable.
Dim startingAmount As Long = 500

' Declare a variable that refers to a Button object,
' create a Button object, and assign the Button object
' to the variable.
Dim switchButton As New System.Windows.Forms.Button

' Declare a local variable that always retains its value,
' even after its procedure returns to the calling code.
Static totalSales As Double

' Declare a variable that refers to an array.
Dim highTemperature(31) As Integer

' Declare and initialize an array variable that
' holds four Boolean check values.
Dim checkValues() As Boolean = {False, False, True, False}

예제Example

다음 예에서는 1에서 30 사이의 소수를 나열 합니다.The following example lists the prime numbers between 1 and 30. 지역 변수의 범위는 코드 설명에 설명 되어 있습니다.The scope of local variables is described in code comments.

Public Sub ListPrimes()
    ' The sb variable can be accessed only
    ' within the ListPrimes procedure.
    Dim sb As New System.Text.StringBuilder()

    ' The number variable can be accessed only
    ' within the For...Next block.  A different
    ' variable with the same name could be declared
    ' outside of the For...Next block.
    For number As Integer = 1 To 30
        If CheckIfPrime(number) = True Then
            sb.Append(number.ToString & " ")
        End If
    Next

    Debug.WriteLine(sb.ToString)
    ' Output: 2 3 5 7 11 13 17 19 23 29
End Sub


Private Function CheckIfPrime(ByVal number As Integer) As Boolean
    If number < 2 Then
        Return False
    Else
        ' The root and highCheck variables can be accessed
        ' only within the Else block.  Different variables
        ' with the same names could be declared outside of
        ' the Else block.
        Dim root As Double = Math.Sqrt(number)
        Dim highCheck As Integer = Convert.ToInt32(Math.Truncate(root))

        ' The div variable can be accessed only within
        ' the For...Next block.
        For div As Integer = 2 To highCheck
            If number Mod div = 0 Then
                Return False
            End If
        Next

        Return True
    End If
End Function

예제Example

다음 예제에서는 speedValue 변수가 클래스 수준에서 선언 됩니다.In the following example, the speedValue variable is declared at the class level. Private 키워드는 변수를 선언 하는 데 사용 됩니다.The Private keyword is used to declare the variable. 변수는 Car 클래스의 모든 프로시저에서 액세스할 수 있습니다.The variable can be accessed by any procedure in the Car class.

' Create a new instance of a Car.
Dim theCar As New Car()
theCar.Accelerate(30)
theCar.Accelerate(20)
theCar.Accelerate(-5)

Debug.WriteLine(theCar.Speed.ToString)
' Output: 45
Public Class Car
    ' The speedValue variable can be accessed by
    ' any procedure in the Car class.
    Private speedValue As Integer = 0

    Public ReadOnly Property Speed() As Integer
        Get
            Return speedValue
        End Get
    End Property

    Public Sub Accelerate(ByVal speedIncrease As Integer)
        speedValue += speedIncrease
    End Sub
End Class

참고자료See also