다양한 언어의 키워드 비교
이 항목에는 언어 키워드로 요약할 수 있는 일반 프로그래밍 작업이 나열되어 있습니다. 코드 예제가 필요한 작업에 대한 자세한 내용은 코드 예제를 통한 다양한 언어의 프로그래밍 개념 비교를 참조하십시오.
용도 |
Visual Basic |
C++ |
C# |
/F |
---|---|---|---|---|
변수 선언 |
선언자(키워드가 아닌 개념) |
선언자(키워드는 사용자 정의 형식 및 기본 제공 형식 포함) |
||
명명된 상수 선언 |
||||
클래스의 새 인스턴스 만들기 |
new |
|||
새 개체 만들기 |
CreateObject(COM 개체의 경우) |
CoCreateInstance()(COM 개체의 경우) |
new |
|
개체 변수에 개체 할당 |
= |
= |
<- |
|
함수/메서드는 값을 반환하지 않음 |
Sub2 |
|||
함수 또는 메서드 오버로드(Visual Basic: 프로시저 또는 메서드 오버로드) |
(이 경우 언어 키워드가 필요하지 않음) |
(이 경우 언어 키워드가 필요하지 않음) |
||
현재 개체 참조 |
Me3 |
|||
현재 개체의 가상 메서드를 실제로 호출 |
MyClass::Func1(), 여기서 MyClass는 멤버 함수가 Func1인 C++ 클래스 |
해당 없음 |
해당 없음 |
|
문자열에서 문자 검색 |
*(p + 10) 또는 p[10], 여기서 p는 char* 또는 wchar_t* |
str[10], 여기서 str는 문자열 |
str.Chars(10), 여기서 str는 문자열 |
|
복합 데이터 형식(구조체) 선언 |
||||
개체(생성자) 초기화 |
생성자(키워드가 아니라 개념임) |
생성자 또는 시스템 기본 형식 생성자 |
||
개체 직접 종료 |
해당 없음 |
~ClassName |
해당 없음 |
해당 없음 |
가비지 수집에 의해 개체가 회수되기 전에 시스템에 의해 호출된 메서드5 |
Finalize(Visual Basic 6.0인 경우 Class_Terminate) |
Destructors (C++)(키워드가 아니라 개념임) |
||
관리되지 않는 리소스가 사용 후 삭제되도록 함 |
해당 없음 |
|||
선언되는 위치에서 변수 초기화 |
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(이 연산자는 대리자 인스턴스의 형태로 함수에 대한 참조 반환) |
|||
콜백 |
한 함수의 주소를 호출자를 다시 호출하는 다른 함수에 전달합니다. 예제를 보려면 방법: Visual Basic에서 프로시저에 다른 프로시저 전달을 참조하십시오. |
CALLBACK(표준 형식) callback(IDL 특성) |
해당 없음 |
|
개체가 비동기적으로 수정될 수 있음을 선언 |
해당 없음 |
해당 없음 |
||
변수를 강제로 명시적으로 선언 |
적용할 수 없습니다(모든 변수는 사용 전에 선언해야 합니다). |
적용할 수 없습니다(모든 변수는 사용 전에 선언해야 합니다). |
적용할 수 없습니다(모든 변수는 사용 전에 선언해야 합니다). |
|
지역 형식 유추 사용 |
형식 유추가 자동으로 사용 |
|||
개체를 참조하지 않는 개체 변수의 테스트 |
pobj == NULL |
obj == null |
일치 식에서 옵션 형식을 사용 |
|
개체를 참조하지 않는 개체 변수의 값 |
nullptr |
|||
데이터베이스 null 식의 테스트 |
해당 없음 |
해당 없음 |
해당 없음 |
|
Variant 변수가 초기화되었는지 여부 테스트 |
해당 없음 |
해당 없음 |
해당 없음 |
해당 없음 |
기본 속성 정의 |
property: property 키워드는 관리 코드를 나타냄 |
개체 지향 프로그래밍
용도 |
Visual Basic |
C++ |
C# |
/F |
---|---|---|---|---|
기본 클래스 참조 |
||||
인터페이스 선언 |
||||
구현될 인터페이스 지정 |
(인터페이스에서 파생) class C1 : public I1 |
class C1 : I1 인터페이스 |
||
클래스 선언 |
||||
모듈 선언 |
static class |
static class |
||
클래스 또는 구조체의 부분 정의 선언 |
해당 없음 |
직접 해당하는 항목이 없습니다. 형식 확장(F#)를 참조하십시오. |
||
클래스가 상속될 수만 있도록 지정. 클래스의 인스턴스를 만들 수 없음 |
||||
클래스가 상속될 수 없도록 지정 |
||||
열거 형식 선언 |
||||
클래스 상수 선언 |
const(필드 선언에 적용) |
값은 기본적으로 변경할 수 없습니다(상수). 값(F#)를 참조하십시오. |
||
기본 클래스에서 클래스 파생 |
Class C1 : public Base(이 경우 언어 키워드가 필요하지 않음) |
class C1 : C2 |
||
메서드 또는 속성 재정의 |
이 경우 언어 키워드가 필요하지 않음. 단 /clr 컴파일을 위한 override는 예외임(Derived Classes 참조) |
|||
파생하는 클래스에서 구현되어야 하는 메서드 선언 |
선언 끝에 = 0 삽입(순수 가상 메서드) |
|||
재정의할 수 없는 메서드 선언 |
NotOverridable(메서드는 기본적으로 NotOverridable임) |
Sealed 특성 사용 |
||
가상 메서드나 속성 또는 속성 접근자 선언 |
메서드에 설명되어 있는 abstract입니다. |
|||
파생 클래스에서 기본 클래스 멤버 숨기기 |
가상 또는 추상 메서드 숨기기는 허용되지 않습니다. |
|||
클래스 메서드에 대한 형식 안전 참조 선언 |
myObj.myFunction. 여기서 myObj는 개체이고 myMethod는 해당 개체에 사용할 수 있는 메서드입니다. |
|||
변수에 해당 이벤트를 처리하려는 개체가 포함될 수 있도록 지정 |
해당 없음 |
(코드 쓰기 - 특정 키워드 없음) |
해당 없음 |
|
이벤트 프로시저가 호출될 이벤트 지정 |
Handles(이벤트 프로시저는 명명 패턴에 의해 WithEvents 변수와 연결될 수 있음) |
해당 없음 |
event += eventHandler; |
해당 없음 |
여러 멤버에 액세스하기 위해 개체 식을 한 번 계산 |
해당 없음 |
해당 없음 |
해당 없음 |
예외 처리
용도 |
Visual Basic |
C++ |
C# |
/F |
---|---|---|---|---|
예외 처리 |
구조적 예외 처리:__try, __except C++ 예외 처리: CLR 예외 처리: |
판단 구조
용도 |
Visual Basic |
C++ |
C# |
/F |
---|---|---|---|---|
판단 구조 (선택) |
||||
판단 구조 (if ... then) |
||||
루프 구조(조건부) |
||||
루프 구조 (반복) |
배열
용도 |
Visual Basic |
C++ |
C# |
/F |
---|---|---|---|---|
배열 선언 |
int[] x = new int[5]; |
let x = [| 1; 2; 3; 4; 5 |] |
||
배열 초기화 |
let x = [| 1; 2; 3; 4; 5 |] |
|||
배열 다시 할당 |
해당 없음 |
해당 없음 |
해당 없음 |
클래스 범위
용도 |
Visual Basic |
C++ |
C# |
/F |
---|---|---|---|---|
프로젝트 또는 어셈블리 외부에서 볼 수 있음 |
||||
선언된 어셈블리 내에서만 볼 수 있음 |
||||
현재 또는 파생 클래스 내에서만 볼 수 있음 |
해당 없음 |
해당 없음 |
||
현재 어셈블리 또는 포함하는 클래스에서 파생된 형식으로 액세스가 제한됩니다. |
protected internal |
해당 없음 |
||
프로젝트 내부(중첩 클래스의 경우 포함 클래스 내부)에서만 볼 수 있음 |
멤버 범위
용도 |
Visual Basic |
C++ |
C# |
/F |
---|---|---|---|---|
클래스, 프로젝트 및 모듈 외부에서 액세스할 수 있음 |
||||
클래스 외부, 프로젝트 또는 패키지 내에서 액세스할 수 있음 |
public private |
|||
현재 및 파생된 클래스에만 액세스할 수 있음 |
해당 없음 |
|||
클래스 또는 모듈 내에서만 액세스할 수 있음 |
||||
선언하는 클래스의 private 멤버에 함수 또는 다른 클래스에서 액세스할 수 있도록 지정 |
해당 없음 |
해당 없음 |
해당 없음 |
|
어셈블리 내에서 보호되며 다른 어셈블리에 대해 private임 |
해당 없음 |
protected private |
해당 없음 |
해당 없음 |
현재 어셈블리 또는 포함하는 클래스에서 파생된 형식으로 액세스가 제한됨 |
protected internal |
해당 없음 |
기타 수명
용도 |
Visual Basic |
C++ |
C# |
/F |
---|---|---|---|---|
프로시저의 지역 변수 유지 |
해당 없음 |
|||
클래스의 모든 인스턴스에 의해 공유 |
기타
용도 |
Visual Basic |
C++ |
C# |
/F |
---|---|---|---|---|
주석 코드 |
//, (* *) 주석이 여러 줄인 경우 |
|||
대/소문자 구분? |
아니요 |
예 |
예 |
예 |
Windows API 호출 |
해당 없음 |
Platform Invoke 사용 외부 함수(F#)를 참조하십시오. |
||
이벤트 선언 및 발생 |
해당 없음 |
|||
스레딩 기본 형식 |
해당 없음 |
|||
이동(분기) |
해당 없음 |
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을 사용하여 변수를 선언하면 해당 변수가 범위를 유실했다가 다시 확보하는 경우에도 변수 값이 보존됩니다.
참고 항목
참조
여러 언어 및 라이브러리에서 사용되는 컨트롤 및 프로그래밍 가능한 개체 비교