Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Properti yang ditentukan dalam daftar inisialisasi jenis anonim tidak dapat menjadi bagian dari definisi ekspresi lambda dalam daftar yang sama. Misalnya, dalam kode berikut, properti Num tidak dapat disertakan dalam definisi LambdaFun.
' Not valid.
'Dim anon = New With {.Num = 4, .LambdaFun = Function() .Num > 0}
ID Kesalahan: BC36549
Untuk memperbaiki kesalahan ini
Pertimbangkan untuk membagi jenis anonim menjadi dua bagian:
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))Perhatikan bahwa jika Anda menyatakan
anon1.Numsebagai propertiKey, nilainya tidak dapat diubah.Alternatifnya adalah menggunakan pernyataan fungsi reguler untuk mengakses properti jenis anonim:
Function testNum(ByVal n As Integer) As Boolean Return n > 0 End Function Console.WriteLine(testNum(anon1.Num))Demikian pula, Anda dapat menggunakan fungsi lambda yang didefinisikan di luar jenis anonim:
Dim lambdaFun1 = Function() anon1.Num > 0 Dim lambdaFun2 = Function(n As Integer) n > 0