myślałem, widziałem to wszystko, ale to ... :)C# rodzajowych, porównując 2 ciągi fail chyba że wyraźnie określono
pracowałem na ogólny wykresu typu ciąg,
Graph<string> graph = new Graph<string>();
wykres jest zadeklarowana w klasie przymusu jak ten:
public class Graph<T> where T : class
Następny wypełniam się wykres z niektórych dynamicznie generowanych ciągów:
for (char t = 'A'; t < 'J'; t++)
{
GraphPrim.Add(t.ToString());
}
Jak dotąd tak dobre, (Node jest klasa wewnętrzna zawierająca oryginalną wartość oraz listę odnośników do innych węzłów (ponieważ jego wykres))
Teraz, gdy próbuję tworzyć relacje między różnymi węzły, muszę wyszukać właściwy węzeł, sprawdzając jego wartość i tam, gdzie zaczyna się dziwność.
Poniższy kod, jest bezpośrednią kopią wyniku znaleźć w immidiate okna po wykonaniu kilku testów:
Nodes.First().Value
"A"
Nodes.First().Value == "A"
false
Nodes.First().Value.ToString() == "A"
true
jestem całkowicie brakuje czegoś lub nie powinien Nodes.First() Wartość ==. "A" używa metody porównywania ciągów znaków. (Kompilator JIT ma wiedzę o typie używanym w środowisku wykonawczym, a wraz z nim jego obsługiwane metody, prawda?). Wydaje mi się, że gdy nie określamy jawnie łańcucha znaków, zrobi to test referencyjny, a nie test łańcuchowy.
Byłoby wspaniale, gdyby ktoś mógłby mi to wyjaśnić,
Z góry dzięki!
Jaki jest statyczny typ właściwości "Wartość"? –
Czy jesteś pewien, że wartość jest zdefiniowana jako: public T Wartość {get; zestaw; } – albertein