2012-09-06 3 views
1

엉터리 질문 제목 죄송합니다. 예를 들어C# 캐스팅 문제 - 간결

Button button = (Button)Gridview.Cells[0].FindControl("controlname"); 
button.Enabled = (some boolean); 

, VB에서 directcast가 수 : 한 줄에이 할 수있는 방법이 있나요

DirectCast(Gridview.Cells(0).FindControl("controlname"), Button).Enabled = (some boolean value) 

를 아니면 두 줄에 있어야합니까?

감사합니다.

답변

13

나는 당신이 명백하게 노력한 것 같지만 바인딩 우선 순위에 매료되었습니다. 메소드와 속성은 다르게 지정하지 않는 한 캐스트 전에 수행됩니다. 괄호를 사용하면 먼저 캐스팅을 수행 한 다음 현재 캐스팅 된 컨트롤에서 속성을 호출 할 수 있습니다.

((Button)Gridview.Cells[0].FindControl("controlname")).Enabled = (some boolean); 
+1

"괄호"....? –

+0

@KirkWoll : 잉글랜드 (또는 적어도 내가 배운 곳)'()'는 괄호와 괄호라고 부릅니다. (저는 사람들이 중괄호라고 부릅니다). 나는 보통 대괄호 (여기에 표시된대로)를 대괄호라고 부르며 대괄호, 중괄호 등을 호출하여 다른 유형과 구별합니다. Wikipedia는 "사용 된 정규화되지 않은 대괄호는 다른 유형의 대괄호를 나타냅니다. 세상과 다른 맥락에서. " - http://en.wikipedia.org/wiki/Bracket – Chris

+0

@KirkWoll : [this] (http://dict.leo.org/forum/viewUnsolvedquery.php?idThread=155474&idForum=1&lp=ende&lang=de)에 따르면, 토론 이들은 대다수의 원어민이 대괄호라고 부릅니다. –

6

그냥 괄호 안에 원래 표현을 묶

((Button)Gridview.Cells[0].FindControl("controlname")).Enabled = true; 
+3

왜 내 대답보다 30 초가 더 걸린 사람이이 사람을 했습니까? 가혹한 것 같습니다! – Chris

+0

내 게시물을 게시 할 때까지 귀하의 응답이 내 페이지에 표시되지 않았습니다. 그리고 처음 등장했을 때, 그것은 설명문이 없었습니다. 좋은 '안녕, SO 빠른 무승부 ... 내가 설명을 추가 내 편집 이후에 타임 스탬프를 본 이후 –

+0

그래, 나는 완전히 이해하고 수정합니다. 나는 그것이 복제에 대한했지만 누가 알 겠어 당신은 내가 누군가 당신을 -1ed하고 아래 유권자가 난 단지 가정 할 수 있습니다 (설명 또는 아래로 투표를 철회 할 수 있다는 희망 너무 놀랐습니다 이유입니다 복사 또는 아무것도하지 않았다는 것을 100 % 확신). – Chris