2014-11-18 2 views
0

누군가이 코드 줄이 실제로 무엇을하고 있는지 설명 할 수 있습니까?다음 코드 줄을 설명 할 수 있습니까?

txtModule.Visible = (cboModule.SelectedIndex = 0) 

것은 나는 cboModule 0의 selectedIndex의를 갖는 부울 결과 txtModule의 visible 속성을 설정합니다 바라고 있지만, 이러한 경우이며, 만약 그렇다면 왜.

이 답변을 찾으려고했지만이 종류의 할당이 무엇인지 알 수 없으므로이를 알고 있으면 도움이됩니다.

+0

단순히 표현식의 결과를 할당하는 것입니다. '(cboModule.SelectedIndex = 0)'는 인덱스가 0인지 아닌지에 따라 true 또는 false를 반환하는 부울 식입니다. 결과 부울은 'Visible' 속성에 할당됩니다. –

+0

고마워, 내가 기대했던 것처럼 항상 작동하지 않을까 우려했다. 예를 들어 cboModule.SelectedIndex의 값을 0으로 설정했다. – Graham

+0

C#에 상응하는 txtModule.Visible = (cboModule.SelectedIndex == 0)'여기서 과제와 평등은 다른 연산자입니다. –

답변

0

진짜 답 : 등호 기호는 두 가지 역할을한다 어디

txtModule.Visible = (cboModule.SelectedIndex = 0) 

실제로

Let txtModule.Visible = (cboModule.SelectedIndex = 0) 

입니다.

첫 번째 역할에서는 Let variable = expression과 같이 Let 구문의 일부입니다. Let은 BASIC이 발전함에 따라 선택 사항이 되었기 때문에 거의 사용되지 않습니다 (http://msdn.microsoft.com/en-us/library/aa243390(v=vs.60).aspx 참조). 이것은 BASIC (및 VB6 및 VBA)이 할당 문을 수행하는 방법입니다 (http://en.wikipedia.org/wiki/Assignment_(computer_science) 참조).

사실 VB.NET에서는 Let을 사용하지 않지만이 첫 번째 역할에서 등호 사용은 계속됩니다.두 번째 역할에서

, 그것은,

일부 언어에서

는, 할당이 문을 (예 : VB.Net 등)이다 (Object equality behaves different in .NET를 볼 수 있지만 정확히) 일반적으로 C 번호의 ==에 해당 항등 연산자이고, 다른 경우에는 연산자 (예 : C#)입니다. 위 인용 된 Wiki 페이지에서 "할당 연산자로 등호를 사용하는 것은 평등에 대한 비교로 equals와의 충돌로 자주 비판을 받았으며 초보자가 코드를 작성하는 데 혼란을 겪고 경험이있는 사람도 혼란을 겪습니다 프로그래머들이 코드를 읽는다. " 외관상으로, Fortran는 비난 할 것이다.

2

은 0을 반환 부울로 cboModule.SelectedIndex을 비교 이후

If cboModule.SelectedIndex = 0 Then 
    txtModule.Visible = True 
Else 
    txtModule.Visible = False 
End If 

와 같은, 당신도 할 수 있습니다.

Dim b As Boolean 
b = (cboModule.SelectedIndex = 0) 
txtModule.Visible = b 

VB에서는 변수를 설정하고 비교할 때 동일한 연산자를 사용하기 때문에 약간 혼란 스러울 수 있습니다.

0

Alex K 님의 의견이 정확합니다. 당신은 그 진술을 정확히 같은 것을 할

txtModule.Visible = If(cboModule.SelectedIndex = 0, True, False) 

으로 더 자세히 쓸 수 있습니다.

0

여기에있는 속임수는 = 연산자가 VB.Net에서 두 가지 의미를가집니다. 동등한 비교와 할당에 모두 사용할 수 있습니다. 또한 대입이 더 큰 표현식의 일부로 만들어 질 수있는 많은 상황이 있습니다. 할당은 할당되는 변수가 코드 행의 왼쪽에있는 모든 방법입니다.

이 경우 두 개의 = 표현이 있습니다. 첫 번째 표현식 (왼쪽의 =)은 부울 txtModule.Visible 변수에 대한 할당이지만 cboModule.SelectedIndex = 0 표현식은 명확하지 않습니다. 다른 맥락에서 이것은 양도 또는 평등 테스트가 될 수 있습니다. 괄호의 목적은 표현식이 C 스타일의 언어에 익숙한 사람에 의해 쓰여진 것으로 판단되는 표현식을 명확하게하려는 것입니다. 괄호는 일반적으로 조건식을 나타내는 데 사용됩니다. 그런 다음 비교 결과 (부울)가 부울 txtModule.Visible 변수에 지정됩니다.

관련 문제