MSDN 에서 발췌했습니다.
언어간키워드비교
이항목에는언어키워드로요약할수있는일반프로그래밍작업이나열되어있습니다. 코드예제가필요한작업에대한자세한내용은코드예제를통한다양한언어의프로그래밍개념비교를참조하십시오.
용도
Visual Basic
C#
변수 선언
Dim 문(Visual Basic)
Public(Visual Basic)
Friend(Visual Basic)
Protected(Visual Basic)
Private(Visual Basic)
Shared(Visual Basic)
Static(Visual Basic) 1
선언자(키워드는 사용자 정의 형식 및 기본 제공 형식 포함)
명명된 상수 선언
Const
const
readonly
클래스의 새 인스턴스 만들기
New
new
새 개체 만들기
CreateObject()
new
개체 변수에 개체 할당
=
=
함수/메서드는 값을 반환하지 않음
Sub 2
void
함수 또는 메서드 오버로드(Visual Basic: 프로시저 또는 메서드 오버로드)
Overloads
(이 경우 언어 키워드가 필요하지 않음)
현재 개체 참조
Me 3
this
현재 개체의 가상 메서드를 실제로 호출
MyClass
n/a
문자열에서 문자 검색
str(10), 여기서 str는 문자열
string
str[10], 여기서 str는 문자열
string
복합 데이터 형식(구조체) 선언
Structure
struct
class
interface
개체(생성자) 초기화
Sub New() 5
생성자 또는 시스템 기본 형식 생성자
클래스생성자
개체 직접 종료
n/a
n/a
가비지 수집에 의해 개체가 회수되기 전에 시스템에 의해 호출된 메서드7
Finalize(Visual Basic 6.0인 경우 Class_Terminate)
소멸자
선언되는 위치에서 변수 초기화
Dim x As Long = 5
Dim c As New Car(FuelTypeEnum.Gas)
// initialize to a value:
int x = 123;
// or use default constructor:
int x = new int();
함수 주소 가져오기
AddressOf(이 연산자는 대리자 인스턴스의 형태로 함수에 대한 참조 반환)
delegate
콜백
한 함수의 주소를 호출자를 다시 호출하는 다른 함수에 전달합니다. 예제를 보려면 방법: Visual Basic에서프로시저에다른프로시저전달을 참조하십시오.
delegate
개체가 비동기적으로 수정될 수 있음을 선언
n/a
volatile
변수를 강제로 명시적으로 선언
Option Explicit
n/a(모든 변수는 사용 전에 선언해야 함)
개체를 참조하지 않는 개체 변수의 테스트
obj Is Nothing
obj == null
개체를 참조하지 않는 개체 변수의 값
Nothing
null
데이터베이스 null 식의 테스트
IsDbNull
n/a
Variant 변수가 초기화되었는지 여부 테스트
n/a
n/a
기본 속성 정의
Default
인덱서
![]() |
Visual Basic |
C# |
기본 클래스 참조 |
MyBase |
base |
인터페이스 선언 |
인터페이스 |
interface |
구현될 인터페이스 지정 |
Implements(문) |
classC1 : I1 인터페이스 |
클래스 선언 |
Class |
class |
모듈 선언 |
Module 문 |
static class |
클래스 또는 구조체의 부분 정의 선언 |
Partial(Visual Basic) |
Partial |
클래스가 상속될 수만 있도록 지정. 클래스의 인스턴스를 만들 수 없음 |
MustInherit |
abstract |
클래스가 상속될 수 없도록 지정 |
NotInheritable |
sealed |
열거 형식 선언 |
Enum <members> End Enum |
enum |
클래스 상수 선언 |
Const |
const(필드 선언에 적용) |
기본 클래스에서 클래스 파생 |
Inherits C2 |
class C1 : C2 class |
메서드 또는 속성 재정의 |
Overrides |
override |
파생하는 클래스에서 구현되어야 하는 메서드 선언 |
MustOverride |
abstract |
재정의할 수 없는 메서드 선언 |
NotOverridable(메서드는 기본적으로 NotOverridable임) |
sealed |
가상 메서드나 속성 또는 속성 접근자 선언 |
Overridable |
virtual |
파생 클래스에서 기본 클래스 멤버 숨기기 |
숨김 |
new(C# 참조) |
클래스 메서드에 대한 형식 안전 참조 선언 |
Delegate |
delegate |
변수에 해당 이벤트를 처리하려는 개체가 포함될 수 있도록 지정 |
WithEvents |
(코드 쓰기 - 특정 키워드 없음) |
이벤트 프로시저가 호출될 이벤트 지정 |
Handles(이벤트 프로시저는 명명 패턴에 의해 WithEvents 변수와 연결될 수 있음) |
event += eventHandler; |
여러 멤버에 액세스하기 위해 개체 식을 한 번 계산 |
With objExpr <.member><.member> End With |
using 문(C# 참조) |
![]() |
Visual Basic |
C# |
구조적 예외 처리 |
Try <시도> Catch <오류 처리> Finally <항상 실행> End Try Throw |
try, catch, finally throw |
C++ 예외 처리 |
n/a |
n/a |
![]() |
Visual Basic |
C# |
판단 구조
(선택) |
Select Case ..., Case, Case Else, End Select |
switch case default goto break |
판단 구조(if ... then) |
If ... Then, ElseIf ... Then, Else, End If |
if, else |
루프 구조(조건부) |
While, Do [While, Until] ..., Loop [While, Until] |
do while continue |
루프 구조
(반복) |
For ..., [Exit For] , Next For Each ..., [Exit For] , Next |
for foreach |
![]() |
Visual Basic |
C# |
배열 선언 |
Dim a() As Long |
int[] x = new int[5]; |
배열 초기화 |
Dim a() As Long = {3, 4, 5} |
int[] x = new int[5] {1, 2, 3, 4, 5}; |
배열 다시 할당 |
Redim |
n/a |
![]() |
Visual Basic |
C# |
프로젝트 또는 어셈블리 외부에서 볼 수 있음 |
Public |
public |
어셈블리 외부 또는 패키지 내부에서 볼 수 없음 |
Friend |
internal |
현재 또는 파생 클래스 내에서만 볼 수 있음 |
Protected(Visual Basic) |
Protected |
현재 어셈블리 또는 포함하는 클래스에서 파생된 형식으로 액세스가 제한됩니다. |
Protected Friend |
protected internal 액세스가능성수준 |
프로젝트 내부(중첩 클래스의 경우 포함 클래스 내부)에서만 볼 수 있음 |
Private |
private |
![]() |
Visual Basic |
C# |
클래스, 프로젝트 및 모듈 외부에서 액세스할 수 있음 |
Public |
public |
클래스 외부, 프로젝트 또는 패키지 내에서 액세스할 수 있음 |
Friend |
internal |
현재 및 파생된 클래스에만 액세스할 수 있음 |
Protected |
protected |
클래스 또는 모듈 내에서만 액세스할 수 있음 |
Private |
private |
선언하는 클래스의 private 멤버에 함수 또는 다른 클래스에서 액세스할 수 있도록 지정 |
n/a |
friend |
어셈블리 내에서 보호되며 다른 어셈블리에 대해 private임 |
n/a |
n/a |
현재 어셈블리 또는 포함하는 클래스에서 파생된 형식으로 액세스가 제한됨 |
Protected Friend |
protected internal 액세스가능성수준 |
![]() |
Visual Basic |
C# |
프로시저의 지역 변수 유지 |
Static 11 |
static(C# 참조) |
클래스의 모든 인스턴스에 의해 공유 |
Shared |
static |
![]() |
Visual Basic |
C# |
주석 코드 |
' Rem |
//, /* */ 주석이여러줄인경우 /// XML 주석인경우 |
대/소문자 구분? |
아니요 |
예 |
Windows API 호출 |
Declare <API> |
Platform Invoke 사용 |
이벤트 선언 및 발생 |
Event RaiseEvent |
event |
스레딩 기본 형식 |
SyncLock |
lock |
이동(분기) |
Goto |
goto |
1 Visual Basic에서 Static은프로시저내에서만변수를선언하기위해단독으로사용될수있습니다(예: Static x As Long).
2 Visual Basic에서 Sub 키워드로선언한프로시저는값을반환할수없습니다. 프로시저가값을반환하게될경우 Function 키워드로해당프로시저를선언해야합니다.
3 Visual Basic에서 Me는컴파일타임에확인되지않으므로속성또는메서드의반환값으로사용할수있습니다.
4 JScript에서 substr 함수는계속지원되지만문자열내의문자에액세스하는방법으로더이상선호되지않습니다. 문자열의특정위치에있는문자에액세스하는가장효율적인방법은괄호를사용하는것입니다. 예를들어, str문자열의 10번째문자에액세스하려면str[10]을사용합니다.
5 Visual Basic에서 .NET Framework System.Object에서파생된클래스의생성자는항상 New로명명됩니다.
6 JScript에서생성자에대해서는오버로드가허용되지않습니다.
7일반적으로이러한메서드의코드는가비지수집기가자동으로해제하지않는시스템리소스를사용가능하게합니다.
8 C++에서추상클래스는적어도하나의순수가상멤버를포함합니다.
9 JScript에는 Visual Basic에서사용하는것과같이선행마침표가없습니다. 변수를속성으로잘못파악하거나속성을변수로잘못파악할수있기때문에이기능은혼동하기쉽습니다. 또한 with 문은느린코드를생성합니다.
10 JScript에서이것은배열을다시할당하지않고 "증가"시키지도않습니다. JScript 배열(형식 Array로선언)은항상간격이넓고동적입니다. 네이티브배열(System.Array또는type[]으로선언)은동적이지않습니다.
11 Visual Basic에서, 공유되지않는클래스메서드의정적지역변수는다른언어의경우처럼단일복사본을공유하지않고클래스인스턴스단위로저장됩니다. Static을사용하여변수를선언하면해당변수가범위를유실했다가다시확보하는경우에도변수값이보존됩니다.
행복한 고수되십시요...
woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
'.NET' 카테고리의 다른 글
[.NET] Composite Web Client Guidance Community site (0) | 2009.03.06 |
---|---|
[ETC] Visual Studio 2008 Downloads (0) | 2009.03.06 |
[.NET] SCSF Documentation - May 2007 (0) | 2009.03.06 |
Visual Studio 2005 IDE 팁과 트릭 (0) | 2009.03.06 |
[.NET] DataGridView ColumnHeader 에 ContextMenu 붙이기. (0) | 2009.03.06 |