2012-11-17 2 views
1

아래 코드를 살펴보십시오.VB.NET - 하위/함수를 포함하는 메서드 인수

Dim results As IEnumerable(Of Customer) = ExecuteDataReader(_ 
       "SELECT * FROM Customer WHERE Sales> @MinSales", _ 
      Sub(p) p.Add("@MinSales", SqlDbType.Double).Value = 10000.0, _ 
      Function(r) New Customer() With {Name=r("Name"), Address=r("Address"), Sales=r("Sales") }) 

For Each c As Customer in results 
    '... 
Next 

내가 게시 한 이전 질문에서 답변자는이 코드를 게시했습니다. 나는 코드의 sub(p) 또는 function(r)을 이해하지 못합니다.

불행히도 나는 이에 대한 답변을 찾을 근거가 없습니다. 그러므로 나는 제한된 양의 연구를 마친 후에이 질문을 게시했다.

sub(p)function(r)의 의미는 무엇입니까?

업데이트 14시 54분

아래를 참조하십시오. 의미하는 것은 : (Of T)ByVal castRow As Function(Of IDataRecord, T)?

Public Iterator Function ExecuteDataReader(Of T)(ByVal sql As String, 
ByVal addParams as Action(Of SqlParameterCollection), ByVal castRow As 
Funnction(Of IDataRecord, T)) As IEnumerable(Of T) 
+0

@Tim Schmelter, thanks. 감사합니다. 나는 유혹을 받았지만 응답자는 원래의 질문에 대답했습니다. 이것은 완전히 다른 질문입니다. 답변자가 새로운 질문을 한 다른 답변 (내 질문이 아닌)에서 의견을 보았습니다. – w0051977

+0

@ Damien_The_Unbeliever, 감사합니다. 제가 신용을 줄 수 있도록 답을 게시 할 수 있습니까? – w0051977

답변

1

Lambda Expressions :

람다 식 대리자가 유효 어디서나 사용할 수있는 이름이없는 함수 또는 서브 루틴이다. 람다 식은 함수 또는 서브 루틴이 될 수 있으며 단일 행 또는 다중 행일 수 있습니다. 현재 범위의 값을 람다 식으로 전달할 수 있습니다.

Dim increment1 = Function(x) x + 1 
Dim increment2 = Function(x) 
        Return x + 2 
       End Function 
+0

감사합니다. 왜 매개 변수의 유형을 지정하지 않아도됩니까? 귀하의 예제에서 x는 Integer, String, SQLConnection, Person 객체 등일 수 있습니다. – w0051977

+0

@ w0051977 - 컴파일러는 꽤 똑똑합니다. 종종 매개 변수 유형을 유추하여 제공 할 필요가 없습니다. 내가 링크 한 페이지의 아래쪽에 "As 키워드를 사용하여 람다 식 매개 변수의 데이터 형식을 지정할 수도 있고 매개 변수의 데이터 형식을 유추 할 수도 있습니다. 모든 매개 변수는 지정된 데이터 형식을 갖거나 모두 필요합니다. 추론해라. " –

+0

질문을 업데이트했습니다. 두 번째 부분을 살펴볼 수 있습니까? 감사합니다 – w0051977

관련 문제