2010-06-30 7 views
0

Такие, как:Может ли list.findall ссылаться на переменную?

mylist.FindAll(Function(item) item.property = variable) 

Причина я прошу, если я использую синтаксис, как это, я, как правило, чтобы получить строку в whatevever ошибки преобразования, которая заставляет меня думать, «переменная» лечится буквально в виде строки.

Спасибо.

+0

я не уверен, если я правильно вас понял. VB.Net не знает анонимных функций, и передача переменных делегатам невозможна без каких-либо трюков (http://www.paulstovell.com/vb-anonymous-methods). Я уверен, что findAll ссылается на новый List (of sameType), который соответствует findAll Delegate, но содержимое списка - это те же ссылки, что и в «mainlist». –

ответ

0

Вы можете использовать анонимную функцию:

Public Class Form1 

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    Dim lista As New List(Of My_Class) 
    lista.Add(New My_Class With {.x = 1, .y = 0}) 
    For Each R In lista.FindAll(Function(V) V.x = 1) 
     Debug.Print(R.y) 
    Next 
End Sub 


End Class 
Public Class My_Class 
    Public x, y As Integer  
End Class 
+0

Когда сравнивается с постоянным значением, Vb генерируется как Lambda (Function) Когда сравнивается с локальной переменной, Vb генерирует Clousure (Class) – x77

Смежные вопросы