2009-05-23 4 views
6

는 내가 VB.NET 프로젝트에서 작업하는 C#을 개발자입니다, 그리고 VS 내가 사용하려고 노력 계속 :: = 구문은 무엇을 사용합니까?

While reader.Read() 
HydrateBookFromReader(reader:=???) 

HydrateBookFromReader : 내가 지금 같이하는 ByRef 매개 변수와 함께 함수를 호출 할 때 = 거시기를 = 건설, 그것이 무엇이다 :

Public Function HydrateBookFromReader(ByRef reader As SqlDataReader) As Book 

왜 인텔리가 나는 것을 사용하는 것이 주장 계속 않습니다 함수는 다음 서명이?

답변

10

VB에서는 명명 된 매개 변수를 지정하는 데 VB가 사용됩니다.

Contact(Address:="2020 Palm Ave", Name:="Peter Evans") 

이것은 선택적 매개 변수를 지정하는 데 특히 유용합니다.

+0

정확하게 대답했습니다. 감사. 다른 대답은 또한 매우 유익하고 유익했지만 질문의 다른 측면에 초점을 –

+0

yw. Google 구두점을 사용하기가 어렵습니다. C#에 다음 릴리스에서이를 추가하면 등호가없는 콜론이됩니다. 우리가 언어를 전환 할 때 우리의 발가락에 우리를 유지. – DOK

+1

많은 추가 매개 변수가있는 메서드를 처리 할 때 특히 유용하다는 점을 추가했습니다. Office API를 호출 할 때이 부분이 가장 많이 보입니다. 15 개의 선택적 매개 변수가있는 API가 있으며 위치 매개 변수를 모두 생략하지 않고 이름으로 매개 변수를 지정하는 것이 훨씬 편리합니다. (이것이 C#이 기능을 추가 한 이유입니다.) – panopticoncentral

4

인텔리 센스가 내가 왜 그것을 사용한다고 주장하는 이유는 무엇입니까?

그것은 을 제안, IntelliSense를하지 주장 않는다는 점에 유의하는 것이 중요합니다. 귀하의 경우에 그것을 사용하는 것이 이해가되지 않을 것입니다 ...이 기능은 주로 선택 매개 변수가 많은 매우 긴 매개 변수 목록에 사용되며, 그 중 마지막 매개 변수 만 전달하려고합니다. Microsoft Office Interop에서 작업 할 때 유용합니다.

또한 태그에서 언급 했으므로 ByRef과 아무 관련이 없습니다. ByRef은 C#에서 refout과 동일합니다. 즉, 매개 변수 자체를 조작 할 수 있습니다.

+0

매우 통찰력있는, 중요한 것은 인텔리 센스가 사물을 제안하기위한 것이지만 여전히 통제력을 유지한다는 것입니다. –

+0

좋은 점 - Intellisense는 항상 내게 성가 시게하지 않아서, 특히 그것이 무엇인지 알고 있고, 단일 매개 변수 방법에 적용 할 때 무의미하다는 것을 알고 있다고 주장했습니다. –

+0

내가 설명한 이유 ByRef 태그에서 ByVal 매개 변수에 대해 동일한 타이핑을 할 때 Intellisense 제안을 볼 수 없다는 것을 알았 기 때문에 ByRef와 관련이 있다고 생각했습니다. –

1

Intellisense는 : = 구문을 제안 할 수도 있지만,이 구문 없이는 컴파일됩니다. 선택적 매개 변수를 사용할 수 있습니다 C 번호의 향후 버전, 명명 된 매개 변수는 일부 매개 변수가 아니라 다른 사람을 지정할 수 있도록하며,이 선언 된 것보다 다른 순서로 매개 변수를 지정하여

HydrateBookFromReader(myReader); 

. 명명 된 매개 변수를 사용하면 전달되는 매개 변수의 목적을 선택적으로 명확히 할 수 있으므로 경우에 따라 코드를보다 쉽게 ​​읽을 수 있습니다.

명명 된 매개 변수는 많은 불필요한 매개 변수를 제거 할 수있는 COM Interop의 경우 C# 4.0에서 특히 중요합니다.

Anders Hejlsberg는 채널 9의 C# 미래에 대해 http://channel9.msdn.com/pdc2008/TL16/에서 탁월한 토론을했습니다. 이름 붙여진 매개 변수에 대한 그의 논의는 40 분 45 초가됩니다.

+0

+1은 C# 4.0과 잘 어울립니다. 원래의 질문을 완전히 다루지 않습니다. –