Nie mogę dowiedzieć się, jak zrobić "znaleźć" na liście, którą mam na podstawie wartości, które będę przekazywać w czasie wykonywania. Jeśli zobaczysz mój poniższy kod, chcę móc znaleźć CustomClass na liście, dla której jego parametr Path jest równy X, gdzie X zostanie zdefiniowany w czasie wykonywania.C# List.Find method - jak mogę przekazać wartość do predykatu?
Jakieś pomysły, jak zrobić takie znalezisko na liście? Czy nie jest to możliwe bez napisania iteratora i ręcznego znalezienia? W takim razie być może jest to kolekcja kluczy, którą powinienem użyć zamiast tego?
private List<CustomClass> files;
public void someMethod()
{
Uri u= new Uri(www.test.com);
CustomClass cc = this.files.find(matchesUri(u)); // WON'T LET ME DO THIS
}
private static bool matchesUri(List<CustomClass> cc, Uri _u)
{
return cc.Path == _u; }
public class CustomClass
{
private Uri path;
public Uri Path
{
get { return this.path; }
set { this.path = value; }
}
}
PS. Muszę przyznać, że nie nadążam rzeczy źródłowe w doco na http://msdn.microsoft.com/en-us/library/x0b5b5bc.aspx
dzięki chłopaki - przy okazji - czy powinienem był (jeśli byłem bardziej na C#) pracował to po prostu patrząc na składnię metody w doco? Parametry, dopasowanie, Typ: System .. :: Predykat <(Of <(T>)>), Predykat <(Of <(T>)>) delegat definiujący warunki elementu do wyszukiwania ... – Greg
Typ parametru ogranicza typ delegat możesz przejść do metody, a tym samym podpis metody lub lambda, której musisz użyć do utworzenia tego delegata. Nie oznacza to samo w sobie stosowania lambdas, niż jakikolwiek inny typ delegata. Dokumentacja dla lambdas znajduje się tutaj: http://msdn.microsoft.com/en-us/library/bb397687.aspx –
Delegat jest podobny do wskaźnika funkcji. Patrząc na sygnaturę ('delegate bool Predicate (T obj)') można zobaczyć, że predykat jest funkcją (metodą), która przyjmuje ** pojedynczy parametr typu T ** i zwraca wartość ** bool ** . –
Groo