다음을 통해 공유


동일한 초기화 목록 내의 람다 식 정의에는 익명 형식 속성 '<propertyname>'을(를) 사용할 수 없습니다.

업데이트: 2007년 11월

Anonymous type property '<propertyname>' cannot be used in the definition of a lambda expression within the same initialization list

익명 형식의 초기화 목록에 정의된 속성은 동일한 목록의 람다 식 정의에 사용될 수 없습니다. 예를 들어 다음 코드에서 속성 Num은 LambdaFun의 정의에 포함될 수 없습니다.

' Not valid.
'Dim anon = New With {.Num = 4, .LambdaFun = Function() .Num > 0}

오류 ID: BC36549

이 오류를 해결하려면

  1. 익명 형식을 두 부분으로 분리하는 방법을 고려해 볼 수 있습니다.

    Dim anon1 = New With {.Num = 4}
    Dim anon2 = New With {.LambdaFun = Function() anon1.Num > 0}
    ' - or -
    Dim anon3 = New With {.lambdaFun = Function(n As Integer) n > 0}
    Console.WriteLine((anon2.LambdaFun)())
    Console.WriteLine(anon3.lambdaFun(anon1.Num))
    anon1.Num = -5
    Console.WriteLine((anon2.LambdaFun)())
    Console.WriteLine(anon3.lambdaFun(anon1.Num))
    

    anon1.Num을 Key 속성으로 선언하면 해당 값을 변경할 수 없습니다.

  2. 다른 방법은 일반 함수 문을 사용하여 익명 형식 속성에 액세스하는 것입니다.

    Function testNum(ByVal n As Integer) As Boolean
        Return n > 0
    End Function
    Console.WriteLine(testNum(anon1.Num))
    
  3. 마찬가지로 익명 형식 외부에 정의된 람다 식을 사용할 수 있습니다.

    Dim lambdaFun1 = Function() anon1.Num > 0
    Dim lambdaFun2 = Function(n As Integer) n > 0
    

참고 항목

개념

람다 식

익명 형식