C Sharp와 Visual Basic의 비교.그물
Comparison of C Sharp and Visual Basic .비교 프로그래밍 언어 |
---|
|
C# 및 Visual Basic.NET은 위에서 프로그래밍하기 위해 사용되는2개의 주요 언어입니다.NET 프레임워크
언어사
C# 및 VB.NET은 구문적으로 매우 다른 언어이며 매우 다른 역사를 가지고 있습니다.
이름에서 알 수 있듯이 C# 구문은 1970년대 [1]Bell Labs(AT&T)의 Dennis Ritchie가 개발한 핵심 C 프로그래밍 언어에 기초하고 있습니다.Java와 C++는 구문이 C [2]구문을 기반으로 하는 다른 두 개의 프로그래밍 언어이므로 공통의 모양과 느낌을 공유합니다.이 항목에 대한 자세한 내용은 Java와 C Sharp의 비교를 참조하십시오.
베이직의 뿌리는 [3]다트머스 대학으로 거슬러 올라간다.BASIC (Beginner's All-Purpose Symbolic Instruction Code)는 프로세서 특정 및/또는 브랜드 이름 특정 메인프레임 및 하드웨어를 위해 작성된 어셈블리 언어를 사용하는 어려움을 극복하기 위한 방법으로 1960년대에 개발되었습니다.프로그래밍은 하드웨어를 초월해야 하는 프로그래밍의 논리적 구성을 보존하기보다는 마케팅상의 이유로 하드웨어에 더 의존했습니다.(Microsoft가 운영체제로 유명해진 이유는 이러한 작업을 운영체제에 포함시킴으로써 하드웨어 고유의 장치로부터 소비자를 해방시키기 위해서입니다.)컴파일러로 인해 코드가 "휴대용"이 되었습니다.사실 둘 다 Visual Basic입니다.현재 NET과 C#은 동일한 CLR(Common Language Runtime)을 사용하고 있습니다.그러나 마이크로소프트와 HP는 당초의 목표였던 ISO 표준어를 만드는 것에 관심을 가지고 있었습니다.HP는 지원을 중단했고 ISO 컴퓨터 언어는 국제 표준으로 실현되지 않았습니다.
VB.NET은 BASIC에서 루트를 찾습니다.처음에 BASIC은 대학 커뮤니티에서 컴퓨터 프로그래밍을 처음 접하기 위한 "기본" 언어로 사용되었으며, 두문자어는 언어를 정확하게 표현했습니다.1970년대에 이 언어는 당시의 마이크로컴퓨터 제조업체에 의해 단순한 ROM 임베디드 프로그래밍 언어뿐만 아니라 입출력 제어를 위한 준운영체제로도 사용되었다.1980년대 초에 마이크로소프트가 이 언어를 채택하여 본래의 목적을 크게 벗어나 1990년대 내내 Windows [4]프로그래밍용 RAD(신속한 애플리케이션 개발) 도구로 판매된 Visual Basic 언어/플랫폼으로 확장되었습니다.PowerBuilder와 [5]같은 1990년대의 다른 RAD 도구와 직접 경쟁했습니다.Visual Basic은 성공적인 개발 플랫폼이었지만 마이크로소프트가 를 도입했을 때 6번째 버전(VB6) 이후 단종되었습니다.2000년대 초 NET Framework 및 관련 Visual Studio 개발 플랫폼.그 당시, 현재의 C++ 및 VB6 언어는 Microsoft에 의해서, 새로운 「통합 개발 환경(IDE)」의 2개의 새로운 프로그래밍 언어의 베이스로서 사용되고 있었습니다.이 언어들은 C#과 VB로 명명되었습니다.그물.
2017년 2월 마이크로소프트는 2010년 이후 존재해 온 두 언어 간의 "공진화" 전략을 종료하고 두 언어가 다시 독립적으로 진화하도록 하려는 의도를 전달했습니다.C#는 현재 마이크로소프트 기반의 주요 개발 언어입니다.개발자들은 VB 15(Visual Studio 2017에서 처음 등장)에는 새로운 C# 7.[6]3에 포함된 특정 언어 기능이 부족하다는 것을 알게 될 것입니다.
언어 비교
단, C#과 VB.NET은 구문적으로 매우 다르며, 여기서 그 차이가 대부분 종료됩니다.마이크로소프트는 이 두 언어 모두를 같은 것의 일부가 되도록 개발하였습니다.NET Framework 개발 플랫폼.둘 다 마이크로소프트의 [7]동일한 언어 개발 팀에 의해 개발, 관리 및 지원됩니다.이들은 동일한 Intermediate Language(IL; 중간 언어)로 컴파일되며, 이는 동일한 Intermediate Language에 대해 실행됩니다.NET Framework 런타임 라이브러리.[8]프로그래밍 구조에는 몇 가지 차이점이 있지만(아래에서 더 자세히 설명), 그 차이는 주로 구문론적이며 VB6에서 변환을 지원하기 위해 Microsoft가 제공하는 Visual Basic "호환성" 라이브러리를 사용하지 않는 경우 VB의 거의 모든 명령어는 C#에 동등한 명령어가 있으며 그 반대도 마찬가지입니다.마지막으로 두 언어 모두의 동일한 기본 클래스를 참조합니다.NET Framework의 기능을 확장합니다.그 결과, 몇 가지 예외를 제외하고, 어느 한 언어로 작성된 프로그램을 다른 언어로 번역하기 위해 간단한 구문 변환기를 통해 실행할 수 있습니다.이 작업에는 많은 오픈소스 제품과 시판 제품이 있습니다.언어 간의 유일한 근본적인 차이는 인터페이스의 구현과 선언, 이벤트 발생 및 처리에서 찾을 수 있습니다.두 언어 모두 고급 프로그래밍 언어이지만 VB입니다.NET은 일부 측면에서 약간 더 높은 수준의 추상화를 유지합니다.
런타임 다국어 지원
의 주요 목표 중 하나입니다.NET은 다국어 지원이 되어 왔습니다.이 설계의 목적은 다양한 Microsoft 언어 모두가 모든 OS 기능에 동일한 수준의 액세스 권한을 가지며 동일한 수준의 파워와 조작성을 제공할 수 있어야 하며 한 언어의 모듈에서 다른 언어로 작성된 모듈로의 호출을 단순화하는 것이었습니다.
실장에서는 모두.NET 프로그래밍 언어는 동일한 런타임 엔진, 균일한 추상 구문 트리 및 공통 중간 언어를 공유합니다.게다가 모두.NET 언어는 가비지 컬렉션, 크로스 언어 상속, 예외 처리 및 디버깅 등의 플랫폼 기능에 액세스할 수 있습니다.이것에 의해, 임의의 로부터 같은 출력 바이너리를 작성할 수 있습니다.NET 프로그래밍 언어
개발 환경
Visual Studio는 C#과 VB의 개발 환경에서 약간의 차이를 제공합니다.넷. Visual Studio가 출시될 때마다 이러한 언어의 개발 환경 간의 차이가 감소했습니다.예를 들어 Visual Studio의 초기 버전은 Visual Basic에 비해 C#의 Intellissense 지원이 부족했습니다.NET 및 C#[9]의 백그라운드 컴파일은 제공하지 않았습니다.현재 개발 환경의 주요 차이점은 Visual Basic의 추가 기능입니다.다음을 포함한 VB6에서 생성된 NET:
- 기본 네임스페이스는 숨겨져 있지만 사용하지 않도록 설정할 수 있습니다.
- 특정 프로젝트 파일이 숨겨져 있습니다(사용자가 표시할 수 있습니다).
- 자동 생성된
My.*
네임스페이스에는 레지스트리와 응용 프로그램컨피규레이션파일 조작 방법 등 VB6에서 가져온 일반적인 숏컷이 다수 포함되어 있습니다.
백그라운드 컴파일은 Visual Studio IDE의 기능입니다.이 기능에서는, 솔루션을 빌드하지 않고 컴파일 에러를 특정하기 위해서, 프로그래머가 작성한 대로 코드가 컴파일 됩니다.이 기능은 이후 Visual Basic에서 사용할 수 있습니다.NET 1.1 및 Visual Studio for Visual Basic의 초기 버전에 포함되어 있습니다.NET. 단, 백그라운드 컴파일은 Visual C#의 비교적 새로운 개념으로 Visual Studio 2008 Standard Edition 이상 서비스 팩 1에서 사용할 수 있습니다.C#의 분명한 단점은 솔루션을 재구축할 때까지 오류 목록 패널이 업데이트되지 않는다는 것입니다.컴파일 [10]오류를 강조하기 위해 솔루션을 자주 재구축해야 하기 때문에 C#의 대규모 프로젝트를 리팩터링하는 것은 더욱 어려워집니다.이는 Visual Basic에서는 해당되지 않습니다.오류 목록 패널은 백그라운드 컴파일러와 동기화되기 때문입니다.
백그라운드 컴파일은 시스템 리소스에 대한 부담이 적고 빌드 [10]사이클이 빨라집니다.이는 대규모 프로젝트의 특별한 이점이며 [10]IDE에서 디버깅을 시작하는 데 필요한 시간을 크게 단축할 수 있습니다.
언어 기능
C#과 VB의 차이점의 대부분.기술적인 관점에서 NET은 통사당이다.즉, 대부분의 기능이 두 언어 모두 사용되지만, 어떤 기능은 다른 언어보다 한 언어로 수행하기가 더 쉽습니다.두 언어 사이의 많은 차이점은 실제로 IDE에 집중되어 있습니다.
Visual Basic의 기능.C#에서 NET을 찾을 수 없습니다.
- 변수는 다음 명령을 사용하여 선언할 수 있습니다.
WithEvents
건설하다.이 구성은 프로그래머가 클래스 이름 드롭다운 목록에서 개체를 선택한 다음 선언 드롭다운 목록에서 메서드를 선택하여 메서드 서명을 자동으로 삽입할 수 있도록 사용할 수 있습니다. - 이벤트의 자동 회선VB.NET에는
Handles
이벤트 구문: 이벤트 핸들러를 객체가 아닌 객체 변수에 연결합니다. - 이벤트 실행은 다음 명령을 사용하여 수행됩니다.
RaiseEvent
키워드를 지정하면 IDE에 선택할 수 있는 이벤트 목록을 표시할 수 있습니다.RaiseEvent
는 이벤트 핸들러가 배선되어 있는지 암묵적으로 체크합니다(C#에서는 이벤트 발생은 구문적으로 프로시저를 호출하는 것과 동일하며 유선 이벤트핸들러를 체크하기 위해서는 추가 코드 행이 필요합니다). - 이벤트 대표는 선언할 필요가 없습니다.이벤트 선언에 암묵적으로 선언되어 있습니다.
- 수식되지 않은 도트 참조를 사용하여 개체를 참조하고,
With ... End With
구조. - XML[11] 리터럴
- 인라인 날짜 선언(예:
#12/31/2000#
Module
(C#의 스태틱클래스에 추가 의미론도 포함되지만 각 필드는 개별적으로 스태틱으로 선언해야 합니다.)- 멤버
Module
현재 파일로 Import된는 이전 컨테이너 액세스[12] 없이 액세스할 수 있습니다. - 그
My
네임스페이스.[13] - COM 컴포넌트와 상호 운용성은 VB에서 더 강력했습니다.NET (오브젝트 타입은 [14]런타임에 바인드 되어 있습니다만, C# 4.0에 의해,
dynamic
type: 오브젝트의 레이트바운드 형식으로 기능합니다. - 네임스페이스를 프로젝트레벨로 Import 할 수 있기 때문에 C#과 같이 각 파일에 Import 할 필요가 없습니다.
- 조건부 컴파일러 상수의 정의
- 속성 메서드는 매개 변수를 사용할 수 있습니다.
- 속성을 다음 메서드에 전달할 수 있습니다.
ByRef
파라미터(ref
C#의 파라미터)를 참조해 주세요.C#에는 다음 세 가지 추가 지침을 입력해야 합니다.변수를 선언하고 속성 값을 변수에 복사한 후 메서드 호출 후에 변수를 속성에 다시 복사합니다. Enum
는, 내부 인터페이스로 정의할 수 있습니다.Case
문장은 다음과 같은 불평등 표현을 포함할 수 있습니다.Is >= 3
(C# 에서는, 네스트 하는 것으로 흉내낼 수 있습니다.Else
그리고.If
스테이트먼트)Overloads
키워드는 속성 또는 프로시저가 같은 클래스 또는 기본 클래스 내에서 같은 이름의 기존 속성 또는 프로시저를 하나 이상 다시 선언하도록 지정합니다.(C#에 이 키워드가 없으면 의도하지 않은 과부하가 발생할 수 있습니다)Implements
클래스 멤버가 실장하는 인터페이스를 나타냅니다.C#에도 같은 구문이 존재하지만 이는 옵션이며 멤버가 단일 인터페이스를 구현한 경우에만 적용할 수 있습니다.Like
정규 표현을 사용하는 것보다 훨씬 간단한 방법으로 문자열을 패턴 비교하기 위한 연산자.(C# 에서도, Microsoft 에서도 같은 것을 이용할 수 있습니다.Visual Basic.컴파일러 서비스Like Operator.Like String 메서드. 단, 편리한 언어 키워드로는 사용할 수 없습니다.)Return
스테이트먼트는 필요 없습니다.반환은 함수에 값을 할당하여 수행할 수도 있습니다.- Visual Basic에는 다음과 같은 상수가 포함되어 있습니다.
vbCrLf
그리고.vbTab
- 아니요.
out
VB에서는 모든 변수가 자동으로 초기화되기 때문에 파라미터 수식자가 존재합니다. - 그
MyClass
키워드는 원래 구현되어 있는 클래스의 현재 인스턴스를 참조하는 오브젝트 변수와 같이 동작합니다.MyClass
와 유사하다Me
단, 그 위의 모든 메서드콜은 메서드가 NotOverridable인 것처럼 취급됩니다. MyBase.New
는 파생 클래스 컨스트럭터에서 베이스 클래스 컨스트럭터를 명시적으로 호출하기 위해 사용됩니다.- 그
My
기능을 사용하면 다수의 에 쉽고 직관적으로 접근할 수 있습니다.NET Framework 클래스: Visual Basic 사용자가 시스템, 응용 프로그램, 설정, 리소스 등과 상호 작용할 수 있도록 합니다. - 로컬 변수(즉, 프로시저 내부에서 선언된 변수)가 자동으로 초기화됩니다.
- 로컬 변수를 선언하려면
Static
프로시저에 대한 콜 사이의 값을 유지하기 위한 수식자. - 그
Default
선언은 속성을 인덱스로 만들고 수집 검색을 위해 다음과 같은 짧은 구문을 사용할 수 있도록 합니다.MyCollection(5)
. C#은 키워드를 재사용하는 유사한 구성을 가지고 있습니다.this
속성 이름으로 지정합니다.여러 인덱서는 다른 유형의 키를 사용하여 선언할 수 있습니다.MyCollection(5)
또는MyCollection("Bob")
. - C#에는 이 없습니다.
DirectCast
(단일 CLR 명령에 매핑), 엄밀한 타입의 변환은,as
추가 런타임 오류 보호를 포함하는 연산자. - C#에는 이 없습니다.
End
어플리케이션을 갑자기 종료하는 스테이트먼트. - 람다 식 추론
Dim x = Function(n As Integer) n + 1
C#의 기능은 Visual Basic에서 찾을 수 없습니다.그물
- VB에서는 C# ref structure를 사용합니다.NET : 자세한 정보는 다음 URL에서 확인할 수 있습니다.예: https://www.vbforums.com/showthread.php?889867-Use-C-ref-struct-in-VB-NET-Today-And-vote-against-preventing-this-in-Roslyn
- 여러 줄의 코멘트VB에서는 Visual Studio IDE 편집기에서 처리되며 선택 항목에 주석 마커를 추가합니다.
- 스태틱 클래스(비정적 멤버를 포함할 수 없는 클래스(VB).NET의 모듈은 기본적으로 추가 의미를 가진 정적 클래스입니다.)
- 사용할 수 있다
checked
그리고.unchecked
오버플로우/언더플로우 체크를 세밀하게 제어하기 위한 컨텍스트 - 반복적인 for-loop에는 다음과 같은 여러 조건을 포함할 수 있습니다.
for(int i = 0; i < 10 && somethingTrue; i++)
이것은 C의 유산입니다.여기서,for
진술은 기본적으로 통사적인 설탕이다.while
진술. - 속성의 getter와 setter는 별도의 인터페이스를 구현할 수 있습니다.대신 VB에서는 인터페이스를 구현하는 읽기 전용 속성과 다른 인터페이스를 구현하는 쓰기 전용 속성이라는 두 가지 속성을 정의해야 합니다.
- 암묵적인 인터페이스 실장
- 병합 연산자를 사용할 수 있습니다.
??
첫 번째 값(예:) 값을 반환합니다(예:null ?? null ?? 1
돌아온다1
). VB.NET은 다음 명령어를 사용해야 합니다.If
두 가지 매개 변수를 사용하여 기능을 수행합니다(예:If(Nothing, If(Nothing, 1))
돌아온다1
. - 포인터(불안전한 컨텍스트 내)
- 조건부 연산자 ?:
(someThingTrueOrFalse) ? whenTrue() : whenFalse();
. VB.NET은 이 기능을 사용하여If
세 가지 매개 변수를 사용하여 기능합니다.If(someThingTrueOrFalse, whenTrue(), whenFalse())
.
Visual Basic의 기타 특징NET은 C#에 적용되지 않습니다.
- 부울 값 True에서 Integer로 변환하면 사용된 변환에 따라 -1 또는 1이 생성될 수 있습니다.
- 변수 할당 및 비교에는 동일한 토큰이 사용됩니다.
=
C#에는 별도의 토큰이 있는 반면,==
비교 및=
가치를 부여하다 - VB.NET 식별자는 대소문자를 구분하지 않습니다.
- 데이터 유형이 다른 변수에 값을 할당하는 경우(및
Option Strict
켜지지 않음), VB.가능한 경우 NET은 값을 강제합니다.이러한 자동 강제성으로 인해 다음과 같은 예기치 않은 결과가 발생할 수 있습니다.
어둡다 i ~하듯이 정수 = "1" '컴파일러는 자동으로 문자열을 정수로 변환합니다. 어둡다 j ~하듯이 스트링 = 1 컴파일러는 자동으로 정수를 문자열로 변환합니다. 한다면 i = j 그리고나서 컴파일러는 i와 j를 캐스팅하고 비교합니다. 메시지 박스("사용은 피하지만 이 메시지가 나타납니다!") 끝. 한다면
기본값은 입니다만,Option Strict
이전 버전과의 호환성을 위해 해제하는 것은 마이크로소프트에 의해[15] 권장되며 일반적으로 권장되는 방법으로Option Strict
on은 애플리케이션 퍼포먼스가 향상되고 명명 오류 및 기타 프로그래밍 [16]오류가 발생할 가능성이 감소하기 때문입니다.
Val()
null 값을 해석하면서 더블로 변환하는 함수(c#의 경우Convert.ToDouble()
는 임의의 오브젝트를 더블타입 값으로 변환하기 위해 사용되지만 null 값의 경우 예외가 발생합니다.)- CInt, CStr, CByte, CDbl, CBool, CDate, CLng, CCur, COBj 및 언어에 내장된 다양한 변환 기능
C#의 기타 특징은 Visual Basic에는 적용되지 않습니다.그물
- 디폴트로는 수치 연산은 체크되지 않습니다.따라서 숫자 오버플로우가 탐지되지 않을 위험이 있으므로 코드가 약간 더 빨라집니다.그러나 프로그래머는 체크된 콘텍스트에 산술 연산을 배치하여 오버플로우 체크를 활성화할 수 있습니다. (옵션을 선택하면 Visual Basic에서 할 수 있습니다.)
- C# 식별자는 대소문자를 구분합니다.
- 여러 변수에 동일한 값을 할당하려면
a=b=c
.
구문 비교
이 섹션은 어떠한 출처도 인용하지 않습니다.(2013년 6월 (이 및 ) |
Visual Basic.NET은 코드 블록을 다음과 같이 종료합니다.End BlockName
스테이트먼트(또는Next
(for loop의 경우) T-SQL을 사용한 경험이 있는 프로그래머에게 더 친숙한 문입니다.C#에서 교정기는{}
블록 구분에는 C++나 Java 등 널리 배포된 다른 언어 경험이 있는 프로그래머에게 더 친숙한 블록 구분 방법이 사용됩니다.또한 C#에서는 블록이 1개의 문으로만 구성되어 있는 경우 중괄호를 생략할 수 있습니다.
C# 에서는 Visual Basic 에서는 대소문자가 구분됩니다.NET은 그렇지 않습니다.따라서 C#에서는 예를 들어, 동일한 외관 이름을 가진 두 개의 변수를 가질 수 있습니다.variable1
그리고.Variable1
Visual Studio는 VB에 입력된 변수의 대소문자를 수정(균등화)합니다.NET. 그러나 경우에 따라 대소문자를 구분하는 것이 유용할 수 있습니다.C# 프로그래머는 일반적으로 유형 및 멤버 이름을 대문자로 표시하고 필드 및 변수 이름은 소문자로 둡니다.이를 통해 예를 들어 메서드 인수의 이름을 매우 자연스럽게 지정할 수 있습니다.public int CalculateOrders(Customer customer)
단, C# 코드를 Visual Basic 등의 대소문자를 구분하지 않는 언어로 변환하거나 대소문자를 구분하지 않는 언어를 읽는 데 익숙하지 않은 사용자에게 문제가 발생할 수 있습니다.
키워드
Visual Basic은 대소문자를 구분하지 않습니다.즉, 키워드의 대문자와 소문자의 조합은 모두 사용할 수 있습니다.Visual Studio는 모든 Visual Basic 키워드를 기본 대문자로 변환합니다(예: "Public", "If").
C# 에서는 대소문자가 구분되며 모든 C# 키워드는 소문자로 표시됩니다.
Visual Basic과 C#은 대부분의 키워드를 공유합니다.단, 디폴트 Visual Basic 키워드는 C# 키워드의 대문자로 된 버전입니다.Public
대public
,If
대if
.
Visual Basic과 C#의 일부 키워드는 버전이 매우 다릅니다.
Friend
대internal
- 클래스 간 참조를 허용하지만 친구 어셈블리를 제외한 어셈블리 간 참조를 허용하지 않는 액세스 수식자Me
대this
- 현재 객체 인스턴스에 대한 자체 참조MustInherit
대abstract
- 클래스가 직접 인스턴스화되는 것을 방지하고 사용자가 파생된 클래스에 대해서만 오브젝트 참조를 생성하도록 합니다.MustOverride
대abstract
- 파생 클래스가 이 메서드를 덮어쓰도록 강제합니다.MyBase
대base
- 현재 클래스가 파생된 기본 클래스를 참조하기 위해NotInheritable
대sealed
- 상속되지 않을 수 있는 클래스를 선언하는 경우NotOverridable
대sealed
- 파생 클래스에서 덮어쓸 수 없는 메서드를 선언하는 경우Overridable
대virtual
- 파생 클래스에서 메서드를 재정의할 수 있음을 선언합니다.Overrides
대override
- 가상 메서드를 덮어쓰기로 표시합니다.Shared
대static
- 객체의 명시적 인스턴스가 필요하지 않은 메서드를 선언합니다.
다음과 같은 C# 키워드sealed
는 클래스 정의에 적용할 때와 달리 메서드에 적용할 때 다른 것을 나타냅니다.한편, VB.NET 에서는, 콘텍스트 마다 다른 키워드를 사용합니다.
![]() |
평.
C# | Visual Basic.그물 |
---|---|
// 한 줄 코멘트 /* 여러 줄의 코멘트 회선 2 행 3 */ /// XML 한 줄 코멘트 /** XML 여러 줄 댓글 회선 2 행 3 */ # 코멘트 복수-선 댓글 경유로 미리-처리. 선 2 선 3 #엔디프 | ' 한 줄 코멘트 '' XML 첫 번째 줄 코멘트 '' XML 두 번째 줄 코멘트 '' XML 3행 코멘트 REM 코멘트 #코멘트가 있으면 복수-선 댓글 경유로 미리-처리. 선 2 선 3 #종료조건 행내 코멘트를 사용할 수 없습니다. |
조건
C# | Visual Basic.그물 |
한다면 (조건.) { // 조건이 참입니다. } 또 다른 한다면 (다른 조건) { // 조건이 false이고 다른 조건이 true입니다. } 또 다른 { // 조건 및 기타 조건이 false입니다. } | 한다면 조건. 그리고나서 조건은 true 입니다. 그렇지 않으면 다른 조건 그리고나서 조건이 false이고 다른 조건이 true입니다. 또 다른 조건 및 기타 조건이 false입니다. 끝. 한다면 |
루프
C# | Visual Basic.그물 |
위해서 (인트 i = 0; i < > 번호; ++i) { // 0에서 숫자보다 1 적은 루프 } | 위해서 i ~하듯이 정수 = 0 로. 번호 - 1 0에서 숫자보다 1 적은 루프 다음 분. |
위해서 (인트 i = 번호; i >= 0; --i) { // 번호부터0까지의 루프 } | 위해서 i ~하듯이 정수 = 번호 로. 0 걸음 -1 '는 숫자에서 0으로 루프합니다. 다음 분. |
위해서 (인트 i = 0; i <=> 20; i += 2) { // 0에서 20까지 2씩 루프 } | 위해서 i ~하듯이 정수 = 0 로. 20 걸음 2 '는 0부터 20까지 2씩 루프합니다. 다음 분. |
브레이크.; //루프 해제 | 퇴장 위해서 'For 루프에서 벗어나다' 퇴장 하는 동안에 '잠시 루프에서 벗어나다' 퇴장 하다 실행 루프에서 벗어나다 |
비교자
원시형
C# | Visual Basic.그물 | |
한다면 (a == b) { // 동일 } | 한다면 a = b 그리고나서 같다 끝. 한다면 | |
한다면 (a != b) { // 동일하지 않음 } 또는 다음 중 하나를 선택합니다. 한다면 (!(a == b)) { // 동일하지 않음 } | 한다면 a << 고객명 >>님 b 그리고나서 동일하지 않다 끝. 한다면 또는 다음 중 하나를 선택합니다. 한다면 것은 아니다. a = b 그리고나서 동일하지 않다 끝. 한다면 | |
한다면 (a == b & c == d e == f) { // 짧은 인터럽트가 없는 부울 연산자 } | 한다면 a = b 그리고. c = d 또는 e = f 그리고나서 ' 단축되지 않는 부울 연산자 끝. 한다면 | |
한다면 (a == b & & c == d e == f) { // 단락 부울 연산자 } | 한다면 a = b 그리고 또 c = d 오르엘세 e = f 그리고나서 ' 단축 부울 연산자 끝. 한다면 | |
오브젝트 타입
C# | Visual Basic.그물 |
한다면 (물건.레퍼런스 등가(a, b)) { // 변수는 같은 인스턴스를 참조합니다. } | 한다면 a 이 b 그리고나서 'If Object'로 쓸 수도 있습니다.ReferenceEquals(a, b) 다음 변수는 같은 인스턴스를 참조합니다. 끝. 한다면 |
한다면 (!물건.레퍼런스 등가(a, b)) { // 변수가 동일한 인스턴스를 참조하지 않음 } | 한다면 a 하지 않다 b 그리고나서 변수가 동일한 인스턴스를 참조하지 않습니다. 끝. 한다면 |
한다면 (a == b) { // 인스턴스는 동일합니다. } | 한다면 a = b 그리고나서 ' 인스턴스는 동등합니다. 끝. 한다면 |
한다면 (a != b) { // 동등하지 않음 } | 한다면 a << 고객명 >>님 b 그리고나서 동등하지 않다 끝. 한다면 |
변화하다 유형 = 유형(인트); | 어둡다 유형 = Get Type (Get Type)(정수) |
한다면 (a 이 b) { // a와 b의 타입은 호환성이 있습니다. } | 한다면 종류 a 이 b 그리고나서 a와 b의 타입은 호환성이 있습니다. 끝. 한다면 |
한다면 (!(a 이 b)) { // a와 b의 유형이 호환되지 않습니다. } | 한다면 종류 a 하지 않다 b 그리고나서 a와 b의 유형이 호환되지 않습니다. 끝. 한다면 |
입양 및 커뮤니티 지원
C#과 VB 둘 다NET의 채용률은 높고, 매우 적극적인 개발자 커뮤니티와 Microsoft가 양쪽 커뮤니티를 완전하게 서포트하고 있습니다.NET Framework 개발자는 양쪽 VB를 폭넓게 사용합니다.NET 및 C# 를 프라이머리 [17][18]언어로서 사용합니다.그러나 C#는 인터넷 커뮤니티 활동이 많아지고 C#에 사용할 수 있는 책이 많아집니다.이것은, C#의 채용이 증가하고 있는 것, 또는 유저가 C#에 대해 한층 더 도움이 필요한 것을 나타내고 있는 경우가 있습니다.
커뮤니티 및 업계의 도입 예는 다음과 같습니다.
- 2010년 7월 TIOBE Programming Community Index에서는 C#가 Visual[19] Basic을 웃돌고 있습니다.
- TIOBE Programming Community Index는 VB를 나타냅니다.NET, 2018년[20] C# 돌파
- 오리지널 C# 언어 디자이너 Scott Wiltamuth는 2010년 3월 블로그에서 "가장 신뢰할 수 있는 수치...VB에 대해 거의 동등한 채택을 보여줍니다.NET 및 C#.[17]
- 2007년 Forrester Research 조사에 의하면, 의 59%가 이었습니다.NET 개발자는 VB만을 사용했습니다.NET을 사용하여 [18]소프트웨어를 만듭니다.
- Visual Basic Express는 모든 Visual Studio Express 다운로드 [21]중 가장 인기 있는 다운로드입니다.
- Visual Studio Magazine이 2007년 11월에 실시한 조사에 따르면 41%가 C#을 사용한다고 답했으며 34%는 VB로 프로그램되어 있습니다.반면 25%는 '기타'로 응답했다."[21]
- Apress의 마케팅 제품 매니저인 Stephen Wiley는 다음과 같이 보고했습니다.C# 타이틀은 VB보다 더 많이 팔리고 있습니다.NET 타이틀은 2 대 1에서 [21]3 대 1 정도의 차이로 쉽게 읽을 수 있습니다."
- Microsoft 사원의 블로그 사이트인 MSDN 블로그에는 C#에 관한 글이 770,000건, VB에 관한 글은 378,000건에 불과합니다.넷(2016년 [citation needed]2월 4일 기준)
- 유즈넷 검색 엔진인 구글 그룹은 "VB"에 대해 3,520만 번의 조회수를 반환합니다.넷" 및 "C#"의 경우 24400,000(2016년 [citation needed]2월 4일 기준)
- 2018 Stack Overflow 개발자 사용자 설문조사에 따르면 전문 개발자의 35%가 C#을 사용했으며 VB를 사용하는 비율은 6.9%에 불과했습니다.네트워크[22]
기타 언어
C++/CLI(구 Managed C++)
C++/CLI(C++용 Managed Extensions 대체)의 채택률은 C# 또는 VB가 아닙니다.NET, 하지만 상당한 추종자가 있습니다.C++/CLI는 구문, 스타일 및 문화적으로 C#에 가장 가깝습니다.단, C++/CLI는 C#보다 C++ 루트에 가까운 상태를 유지합니다.C++/CLI는 포인터, 디스트럭터 및 기타 안전하지 않은 프로그램 개념을 다른 언어에서 지원하거나 제한합니다.양쪽을 직접 사용할 수 있습니다.NET 코드 및 표준 C++ 코드.C++/CLI 는, 네이티브/레거시 C++ 애플리케이션을 에 이식하기 위해서 사용됩니다.NET 프레임워크 또는 프로그래머가 코드를 더 많이 제어하고자 하는 경우. 그러나 이 제어에는 사용 편의성과 가독성이라는 상당한 비용이 듭니다.Visual Studio와 함께 제공되는 많은 자동화 도구는 C++ 코드와 상호 작용할 때 기능이 저하되었습니다.이는 리플렉션으로 C# 및 VB.net의 코드에 관한 정보를 얻을 수 없기 때문입니다.
J#
J#는 채용률에서 크게 4위다.J#은 주로 Java 어플리케이션의 이행을 용이하게 하기 위해 설계된 언어입니다.NET 프레임워크.개발자는 Java 코드 또는 J++ 코드를 에서 실행하는 동안 대부분의 코드를 변경하지 않고 그대로 둘 수 있습니다.NET 프레임워크의 작은 부분을 다른 프레임워크로 이행할 수 있습니다.NET 언어(예: C#).J#은 다른 언어와 동일한 수준의 업데이트를 받지 않으며 커뮤니티 지원 수준도 동일하지 않습니다.예를 들어 Visual Studio 2005 Team System은 C#, VB에서 유닛 테스트의 자동 생성을 지원합니다.Net 및 C++. 단, J#은 제외합니다.J#은 단종되었으며 Visual Studio 2008 이후 버전에는 포함되어 있지 않습니다.기존 J# 기능 세트가 고객의 요구를 대부분 충족시키고 J#의 사용이 감소하고 있기 때문입니다.
추가의.NET 언어
모든 .NET 언어는 Common Intermediate Language(CIL; 공통 중간 언어)로 컴파일 됩니다.CIL에는 풍부한 메타데이터가 포함되어 기능적으로나 논리적으로 원본과 동일합니다.NET 언어 코드이러한 이유로 CIL에서 직접 코드화할 수 있지만 거의 실행되지 않습니다.CIL 와의 동등성.NET 언어 코드에서는 등의 도구를 사용할 수 있습니다.를 변환하는 NET 리플렉터.원본 소스와 거의 동일한 소스 코드로의 NET 어셈블리.코드 난독화기는 이를 방지하기 위해 자주 사용되며 높은 수준으로 컴파일을 해제하는 것이 어렵거나 불가능하도록 어셈블리의 CIL을 직접 수정하여 작동합니다.NET 언어
레퍼런스
- ^ "Chistory". Cm.bell-labs.com. Archived from the original on 2015-02-03. Retrieved 2013-08-18.
- ^ "History of Java programming language". Freejavaguide.com. Retrieved 2013-08-18.
- ^ "다트머스 베이직"
- ^ "The Birth of Visual Basic". Forestmoon.com. Retrieved 2013-08-18.
- ^ "Powersoft History PowerBuilder History". Lannigan.org. Retrieved 2013-08-18.
- ^ "The .NET Language Strategy". February 2017.
- ^ Krill, Paul (2009-02-27). "Microsoft converging programming languages Developer World". InfoWorld. Archived from the original on 2013-01-26. Retrieved 2013-08-18.
- ^ "Microsoft Intermediate Language". Dotnet-guide.com. Retrieved 2013-08-18.
- ^ Matthew Gertz. "Scaling Up: The Very Busy Background Compiler". MSDN Magazine. Archived from the original on 2008-02-19. Retrieved 2008-12-16.
- ^ a b c "System and methodology providing compiler-assisted refactoring". Freepatentsonline.com. Retrieved 24 February 2015.
- ^ Jonathan Allen. "Does C# Need VB9's XML Literals?". Retrieved 2009-01-13.
- ^ "DateAndTime.Now Property (Microsoft.VisualBasic)". Msdn.microsoft.com. 2015-02-18. Retrieved 2015-02-24.
- ^ "Development with My (Visual Basic)". Msdn.microsoft.com. 2015-02-18. Retrieved 2015-02-24.
- ^ "Early vs. Late Binding". Visualbasic.about.com. Archived from the original on 25 February 2015. Retrieved 24 February 2015.
- ^ "Option Strict Statement". Msdn.microsoft.com. 2015-02-18. Retrieved 2015-02-24.
- ^ GetDotNetCode.com:"Option Strict On". Getdotnetcode.com. Archived from the original on 13 March 2012. Retrieved 24 February 2015.
- ^ a b "VB and C# Coevolution". MSDN. Retrieved 2010-03-27.
- ^ a b "Mono brings Visual Basic programs to Linux". Linux-Watch. Archived from the original on 2012-09-14. Retrieved 2010-03-25.
- ^ "C# is rated higher than Visual Basic for the first time in history". Tiobe.com. Retrieved 24 February 2015.
- ^ "TIOBE Index TIOBE - The Software Quality Company". www.tiobe.com. Retrieved 2019-03-27.
- ^ a b c Patrick Meader. "C#'s Exploding Mindshare". Visual Studio Magazine, November 2007. Archived from the original on 2008-04-20. Retrieved 2008-12-16.
- ^ "Stack Overflow Developer Survey 2018". Stack Overflow. Retrieved 2018-04-22.