Como dice Jaroslav Jandek (lo siento, no puedo hacer ningún comentario, no es suficiente la reputación)
Debido a que compara los dos casos, no su valor (dos referencias).
¡Y de hecho es lo mismo para toneladas de otros casos! Para ex
IPAddress ip1 = IPAddress.Parse("192.168.0.1");
IPAddress ip2 = IPAddress.Parse("192.168.0.1");
aborda Tanto IP representar la misma dirección, pero hay que dos instancias distintas de la clase de dirección IP. Así que, por supuesto, "ip1 == ip2" e "ip1.Equals (ip2)" son ambos falsos, porque no apuntan al mismo objeto.
Ahora, si marca "ip1.Address == ip2.Address", el resultado será verdadero ya que IPAddress.Address es "larga", por lo que está comparando 2 tipos de valores. Tenga en cuenta que "ip1.ToString() == ip2.ToString()" también será verdadero, incluso si una cadena es un tipo de referencia, no un tipo de valor (pero las cadenas son realmente especiales).
De hecho, en su caso, desea comparar la propiedad FullName (es una cadena, por lo que no hay problema).
Usted dice
¿Es sólo mediante el uso de las propiedades, es decir, la propiedad .FullName de que está comparando el valor en lugar de ejemplo?
En realidad, tiene más que ver con si la propiedad es un tipo de valor o un tipo de referencia. Además, al comparar los tipos de referencia, en la mayoría de los casos la comparación será si apuntan al mismo objeto, pero es posible anular los métodos o crear operadores para que la comparación se realice en el contenido de los objetos (una vez más como Jaroslav Jandek ya lo señaló).
HTH
¿Qué razón de comparar objetos DirectoryInfo? Tal vez deberías comparar .FullPath? – griZZZly8
Esos no son los mismos caminos. ¿Es esto algún tipo de prueba de Stroop? –
Además, sus paréntesis están comentados. Si quieres que pongamos energía para ayudarte, ¿no pondrás energía para hacer una buena pregunta? –