List<DirectoryInfo> i Contains

0

Witam.

Mam sobie taki oto problem - mam listę obiektów typu DirectoryInfo:
List<DirectoryInfo> dirList
zawierającą informacje o jakichśtam katalogach. Teraz mam z zewnątrz podaną jakąś ścieżkę do katalogu dirPath(typu string), no i tworzę na tej podstawie sobie obiekt DirectoryInfo - tzn.
DirectoryInfo dir = new DirectoryInfo(dirPath);
I teraz sprawdzam, czy na tej liście znajduje się katalog:
if(dirList.Contains(dir))
Niestety, bez względu na wszystko funkcja zwraca FALSE. Na liście mam np. katalog E:\Downloads, także dir jednoznacznie wskazuje na E:\Downloads, jednakże funkcja Contains zwraca FALSE. Dlaczego..?

user image

Z góry dziękuję za pomoc.</image>

0

Weź sobie dwie kartki papieru. Na każdej z nich napisz swoje imię. Czy będzie to ta sama kartka czy dwie różne?

dir i dirList[0] to różne obiekty. Jeśli chcesz sprawdzić czy opisują ten sam katalog, to porównuj nazwy katalogów na które wskazują.

0

Tak właśnie sądziłem że coś w tym może być, ale też z drugiej strony myślałem, że skoro referencja odnosi się do tego samego obiektu to funkcja powinna stwierdzić, że to ten sam obiekt.

Tak więc tutaj jedynym wyjściem jest np. pętla

bool exists = false;
foreach (directory in dirList) 
{
   if(directory.FullName = dir.FullName)
      exists = true;
}

.. czy idzie to jednak rozwiązać używając funkcji Contains? (jestem początkujący, uczę się dopiero, stąd chciałbym poznać zasady działania pewnych metod), tym niemniej serdeczne dzięki za odpowiedź i rozwianie wszelkich wątpliwości ;)

0

Tak właśnie sądziłem że coś w tym może być, ale też z drugiej strony myślałem, że skoro referencja odnosi się do tego samego obiektu to funkcja powinna stwierdzić, że to ten sam obiekt.

Twoja referencja nie odnosi się do tego samego obiektu!

0
obibok1 napisał(a)

czy idzie to jednak rozwiązać używając funkcji Contains?

No skoro jak widzisz, że się nie da, to się nie da.

Jeśli nie chcesz pętli, to możesz użyć metody Any z LINQ.

1 użytkowników online, w tym zalogowanych: 0, gości: 1