2011-11-16 2 views
14

C# 프로젝트 및 VB.NET 프로젝트를 디버깅 할 때 VS 2010의 직접 실행 창이 다르게 작동하는 것으로 나타났습니다. 그러나 특정 문서를 찾을 수 없었습니다. 이 차이.C# 및 VB.NET의 직접 실행 윈도우 동작 차이점

C# 프로젝트의 경우

, 단순히 어떤 표현을 입력 할 수 있으며, 평가 및 표시, 즉 입력

foo.bar에있을 것입니다 == "바즈"

출력됩니다

VB.NET에서 거짓

에게, 시간 그러나 똑같은 일을하면 아무 것도 출력되지 않습니다.

내가 작동하려면 표현식 앞에 물음표를 써야합니다.

위 foo.bar = "바즈"명확성을 위해

거짓

편집하고 내 나쁜 예 : 다른 모든 표현은 간단한 계산 등을 포함하여 같은 동작을 나타

'1 + 2'로 표시됩니다. 때로는 오류 메시지가 다르지만 1 + 2는 '숫자 뒤에 콜론을 붙여야합니다.'오류가 발생합니다.

이 동작을 '수정'하고 VB.NET 직접 실행 창을 C#과 유사하게 만드는 방법이 있습니까? a를 입력해야합니까? 모든 진술 앞에서 자주 사용하면 고통 스러울 수 있습니다.

답변

14

직접 실행 창의 의미는 완전히 다릅니다. C#에서는 입력 한 표현식이나 문장이 평가되고 평가 결과가 창에 인쇄됩니다. VB.NET에서는 완전한 명령문을 입력해야합니다. 맨손으로 표현할 수는 없습니다. 예를 들어, 발견 한대로 창에 아무 것도 인쇄하려면 '인쇄'문 (별명은 ?)을 사용해야합니다.

이 이유 중 하나는 언어의 의미가 다르다는 것입니다. Bob Kaufman이 언급했듯이 =은 대입 연산자 또는 평등 테스트가 될 수 있습니다. VB.NET 창이 C# 창처럼 작동하면 a = b이 "b를 a에 할당"또는 "b가 a와 같은지 평가"를 의미하는지 확인할 방법이 없습니다.

할당은 VB.NET에서 값을 갖지 않습니다. a = b = 4은 "b가 4와 같은지 평가하고 그 결과를 a에 할당"을 의미합니다. 이것은 a가 true 또는 false와 같음을 의미합니다.

C#에서 assigment는 값이있는 표현이기도하므로 a = b = 4은 "값 4를 b에 할당하고 식 (b = 4)의 값을 a에 할당"을 의미합니다. 이것은 a가 4와 같음을 의미합니다.

+0

감사합니다. 그것은 여전히 ​​고통이지만, 특히 간단한 부동산 평가를 위해. –

+1

기본적으로, 당신의 진술 앞에'?'를 붙이십시오. – levininja

+0

@levininja 절대적으로; 문제는 다소 "왜 필요한 것인가?"입니다. – phoog

5

즉시 창 파서는 을 사용해야합니다. 명령. 명령

foo.bar = "baz" 

은 vb에서 유효합니다.그물은 bar 개체의 필드 또는 속성 foo에 값 "baz"를주는 할당 문입니다. 그러나 막대이 클래스의 메소드 인 경우 불평 할 것입니다. 마찬가지로 "1 + 2"는 vb.net에서 유효한 문이 아닙니다. 명령은 해석자가 표현식을 평가하려는 의미임을 이해하도록 도와줍니다. 할당 연산자에서 = 연산자를 대입 연산자로 바꾸려면 구문 분석기가 표현식을 평가 중임을 이해하게해야합니다. ? 필수. "1 + 2"의 경우와 마찬가지로 vb.net 문 파서는 문 시작 부분에있는 문을 GoTo에 맞는 문 레이블로 사용합니다.

C# 언어는 모든 표현식이 유효한 문인 중괄호 언어 표준을 따릅니다. 그래서 "1 + 2"는 도움없이 유효한 진술로 해석됩니까? 또한 평등 연산자 (==)에 대해 별도의 기호가 필요한 이유로 파서는 대입 문과 표현식의 차이를 알지 못합니다.

+0

추가 설명 주셔서 감사합니다! –