다양한 언어의 키워드 비교

이 항목에는 언어 키워드로 요약할 수 있는 일반 프로그래밍 작업이 나열되어 있습니다. 코드 예제가 필요한 작업에 대한 자세한 내용은 코드 예제를 통한 다양한 언어의 프로그래밍 개념 비교를 참조하십시오.

용도

Visual Basic

C++

C#

/F

변수 선언

Dim

Public

Friend

Protected

Private

Shared

Static1

선언자(키워드가 아닌 개념)

선언자(키워드는 사용자 정의 형식 및 기본 제공 형식 포함)

바인딩 수

명명된 상수 선언

Const

const

const

readonly

바인딩 수

클래스의 새 인스턴스 만들기

새 그룹

new

gcnew

new

new

새 개체 만들기

새 그룹

CreateObject(COM 개체의 경우)

CoCreateInstance()(COM 개체의 경우)

new 

new

개체 변수에 개체 할당

=

=

=

<-

함수/메서드는 값을 반환하지 않음

Sub2

void

void

단위 형식

함수 또는 메서드 오버로드(Visual Basic: 프로시저 또는 메서드 오버로드)

Overloads

(이 경우 언어 키워드가 필요하지 않음)

(이 경우 언어 키워드가 필요하지 않음)

override

현재 개체 참조

Me3

this

this

메서드 또는 구성원 설명대로 자체 식별자를 사용합니다.

현재 개체의 가상 메서드를 실제로 호출

MyClass

MyClass::Func1(), 여기서 MyClass는 멤버 함수가 Func1인 C++ 클래스

해당 없음

해당 없음

문자열에서 문자 검색

GetChar

*(p + 10) 또는 p[10], 여기서 p는 char* 또는 wchar_t*

str[10], 여기서 str는 문자열

string

str.Chars(10), 여기서 str는 문자열

문자열

복합 데이터 형식(구조체) 선언

구조체

클래스

Interface

클래스(class)

구조체

union

__interface

구조체

클래스(class)

interface(인터페이스)

클래스

개체(생성자) 초기화

Sub New()4

생성자(키워드가 아니라 개념임)

생성자 또는 시스템 기본 형식 생성자

클래스 생성자

생성자

개체 직접 종료

해당 없음

~ClassName

해당 없음

해당 없음

가비지 수집에 의해 개체가 회수되기 전에 시스템에 의해 호출된 메서드5

Finalize(Visual Basic 6.0인 경우 Class_Terminate)

Destructors (C++)(키워드가 아니라 개념임)

소멸자

Finalize

관리되지 않는 리소스가 사용 후 삭제되도록 함

Using

해당 없음

using

리소스 관리

선언되는 위치에서 변수 초기화

Dim x As Long = 5

Dim c As New Car(FuelTypeEnum.Gas)

// initialize to a value:

int x=5;

//with an appropriate constructor:

C c(10);

// initialize to a value:

int x = 123;

// or use default constructor:

int x = new int();

let x = 123

함수 주소 가져오기

AddressOf(이 연산자는 대리자 인스턴스의 형태로 함수에 대한 참조 반환)

delegate

대리자

함수

콜백

한 함수의 주소를 호출자를 다시 호출하는 다른 함수에 전달합니다. 예제를 보려면 방법: Visual Basic에서 프로시저에 다른 프로시저 전달을 참조하십시오.

CALLBACK(표준 형식)

callback(IDL 특성)

대리자

해당 없음

개체가 비동기적으로 수정될 수 있음을 선언

해당 없음

volatile

volatile

해당 없음

변수를 강제로 명시적으로 선언

Option Explicit

적용할 수 없습니다(모든 변수는 사용 전에 선언해야 합니다).

적용할 수 없습니다(모든 변수는 사용 전에 선언해야 합니다).

적용할 수 없습니다(모든 변수는 사용 전에 선언해야 합니다).

지역 형식 유추 사용

Option Infer

형식 유추가 자동으로 사용

개체를 참조하지 않는 개체 변수의 테스트

obj Is Nothing

pobj == NULL

obj == null

일치 식에서 옵션 형식을 사용

Option

일치 식

개체를 참조하지 않는 개체 변수의 값

Nothing

nullptr

null

Null 값

데이터베이스 null 식의 테스트

IsDBNull

해당 없음

해당 없음

해당 없음

Variant 변수가 초기화되었는지 여부 테스트

해당 없음

해당 없음

해당 없음

해당 없음

기본 속성 정의

Default

property: property 키워드는 관리 코드를 나타냄

인덱서

인덱싱된 속성

개체 지향 프로그래밍

용도

Visual Basic

C++

C#

/F

기본 클래스 참조

MyBase

__super

base

base

인터페이스 선언

Interface

__interface

interface class

interface(인터페이스)

interface(인터페이스)

구현될 인터페이스 지정

Implements

(인터페이스에서 파생)

class C1 : public I1

class C1 : I1

인터페이스

interface(인터페이스)

클래스 선언

클래스

클래스(class)

Classes and Structs (Managed)

클래스(class)

type

모듈 선언

모듈

static class

static class

모듈(module)

클래스 또는 구조체의 부분 정의 선언

Partial

해당 없음

Partial

직접 해당하는 항목이 없습니다. 형식 확장(F#)를 참조하십시오.

클래스가 상속될 수만 있도록 지정. 클래스의 인스턴스를 만들 수 없음

MustInherit

abstract (Visual C++)6

abstract

추상 클래스

클래스가 상속될 수 없도록 지정

NotInheritable

sealed

sealed

SealedAttribute

열거 형식 선언

Enum

enum

enum

type

클래스 상수 선언

Const

const

const(필드 선언에 적용)

값은 기본적으로 변경할 수 없습니다(상수). 값(F#)를 참조하십시오.

기본 클래스에서 클래스 파생

Class C1 Inherits C2

Class C1 : public Base(이 경우 언어 키워드가 필요하지 않음)

class C1 : C2

클래스(class)

상속

메서드 또는 속성 재정의

Overrides

이 경우 언어 키워드가 필요하지 않음. 단 /clr 컴파일을 위한 override는 예외임(Derived Classes 참조)

override

override

파생하는 클래스에서 구현되어야 하는 메서드 선언

MustOverride

선언 끝에 = 0 삽입(순수 가상 메서드)

abstract

abstract

재정의할 수 없는 메서드 선언

NotOverridable(메서드는 기본적으로 NotOverridable임)

sealed

sealed

Sealed 특성 사용

가상 메서드나 속성 또는 속성 접근자 선언

Overridable

virtual

virtual

메서드에 설명되어 있는 abstract입니다.

파생 클래스에서 기본 클래스 멤버 숨기기

숨김

new (new slot in vtable)

new

가상 또는 추상 메서드 숨기기는 허용되지 않습니다.

클래스 메서드에 대한 형식 안전 참조 선언

Delegate

delegate

대리자

myObj.myFunction. 여기서 myObj는 개체이고 myMethod는 해당 개체에 사용할 수 있는 메서드입니다.

변수에 해당 이벤트를 처리하려는 개체가 포함될 수 있도록 지정

WithEvents

해당 없음

(코드 쓰기 - 특정 키워드 없음)

해당 없음

이벤트 프로시저가 호출될 이벤트 지정

Handles(이벤트 프로시저는 명명 패턴에 의해 WithEvents 변수와 연결될 수 있음)

해당 없음

event += eventHandler;

해당 없음

여러 멤버에 액세스하기 위해 개체 식을 한 번 계산

With... End With

해당 없음

해당 없음

해당 없음

예외 처리

용도

Visual Basic

C++

C#

/F

예외 처리

Try... Catch... Finally... End Try

Throw

구조적 예외 처리:__try, __except

__finally

C++ 예외 처리:

try, catch, throw

CLR 예외 처리:

Exception Handling under /clr

try, catch, finally

throw

try

다음과 같이 바꿀 수 있습니다.

finally

판단 구조

용도

Visual Basic

C++

C#

/F

판단 구조 (선택)

Select... Case... End Select

switch, case, default

goto

break

전환, 대/소문자

default

goto

break

일치 식

판단 구조 (if ... then)

If... Then... Else... End If

ElseIf

if, else

if, else

if...then...else

루프 구조(조건부)

While... End While

Do...Loop

do, while

continue

do

while

continue

while...do

루프 구조 (반복)

For... Next

For Each... Next

for

for

foreach

for...to

for...in

배열

용도

Visual Basic

C++

C#

/F

배열 선언

Dim a() As Long

int x[5];

int[] x = new int[5];

let x = [| 1; 2; 3; 4; 5 |]

배열

배열 초기화

Dim a() As Long = {3, 4, 5}

int x[5]= {1,2,3,4,5};

int[] x = new int[5] {1, 2, 3, 4, 5};

let x = [| 1; 2; 3; 4; 5 |]

배열

배열 다시 할당

Redim

해당 없음

해당 없음

해당 없음

클래스 범위

용도

Visual Basic

C++

C#

/F

프로젝트 또는 어셈블리 외부에서 볼 수 있음

Public

public

public

public

선언된 어셈블리 내에서만 볼 수 있음

Friend

private

internal

internal

현재 또는 파생 클래스 내에서만 볼 수 있음

Protected

해당 없음

Protected

해당 없음

현재 어셈블리 또는 포함하는 클래스에서 파생된 형식으로 액세스가 제한됩니다.

Protected Friend

Type and Member Visibility

protected internal

액세스 가능성 수준

해당 없음

프로젝트 내부(중첩 클래스의 경우 포함 클래스 내부)에서만 볼 수 있음

Private

private

private

private

멤버 범위

용도

Visual Basic

C++

C#

/F

클래스, 프로젝트 및 모듈 외부에서 액세스할 수 있음

Public

public

public

public

클래스 외부, 프로젝트 또는 패키지 내에서 액세스할 수 있음

Friend

public private

internal

internal

현재 및 파생된 클래스에만 액세스할 수 있음

Protected

protected

protected

해당 없음

클래스 또는 모듈 내에서만 액세스할 수 있음

Private

private

private

private

선언하는 클래스의 private 멤버에 함수 또는 다른 클래스에서 액세스할 수 있도록 지정

해당 없음

friend

해당 없음

해당 없음

어셈블리 내에서 보호되며 다른 어셈블리에 대해 private임

해당 없음

protected private

해당 없음

해당 없음

현재 어셈블리 또는 포함하는 클래스에서 파생된 형식으로 액세스가 제한됨

Protected Friend

Type and Member Visibility

protected internal

액세스 가능성 수준

해당 없음

기타 수명

용도

Visual Basic

C++

C#

/F

프로시저의 지역 변수 유지

Static7

static

static

해당 없음

클래스의 모든 인스턴스에 의해 공유

Shared

static

static

static

기타

용도

Visual Basic

C++

C#

/F

주석 코드

'

Rem

//, /* */ 주석이 여러 줄인 경우

//, /* */ 주석이 여러 줄인 경우

/// XML 주석인 경우

//, (* *) 주석이 여러 줄인 경우

대/소문자 구분?

아니요

Windows API 호출

Declare <API>

해당 없음

Platform Invoke 사용

Platform Invoke 사용

외부 함수(F#)를 참조하십시오.

이벤트 선언 및 발생

Event

RaiseEvent

해당 없음

event

이벤트

스레딩 기본 형식

SyncLock

해당 없음

잠금

잠금

이동(분기)

Goto

goto

goto

해당 없음

1 Visual Basic에서 Static은 Static x As Long과 같이 프로시저 내에서 변수를 선언할 때만 단독으로 사용할 수 있습니다.

2 Visual Basic에서 Sub 키워드로 선언한 프로시저는 값을 반환할 수 없습니다. 프로시저가 값을 반환하게 될 경우 Function 키워드로 해당 프로시저를 선언해야 합니다.

3 Visual Basic에서 Me는 컴파일 타임에 확인되지 않으므로 속성 또는 메서드의 반환 값으로 사용할 수 있습니다.

4 Visual Basic에서 .NET Framework System.Object에서 파생된 클래스의 생성자는 항상 New로 명명됩니다.

5 일반적으로 이러한 메서드의 코드는 가비지 수집기가 자동으로 해제하지 않는 시스템 리소스를 사용 가능하게 합니다.

6 C++에서 추상 클래스는 적어도 하나의 순수 가상 멤버를 포함합니다.

7 Visual Basic에서, 공유되지 않는 클래스 메서드의 정적 지역 변수는 다른 언어의 경우처럼 단일 복사본을 공유하지 않고 클래스 인스턴스 단위로 저장됩니다. Static을 사용하여 변수를 선언하면 해당 변수가 범위를 유실했다가 다시 확보하는 경우에도 변수 값이 보존됩니다.

참고 항목

참조

코드 예제를 통한 다양한 언어의 프로그래밍 개념 비교

다양한 언어의 연산자 비교

다양한 언어의 데이터 형식 비교

여러 언어 및 라이브러리에서 사용되는 컨트롤 및 프로그래밍 가능한 개체 비교

기타 리소스

언어 관련 정보