Los estados que documentation for the keyword "is":el "es" palabra clave y la anulación del método Equals
El operador sólo se considera conversiones de referencia, boxeo conversiones y conversiones unboxing. No se tienen en cuenta otras conversiones, como conversiones definidas por el usuario.
¿Qué significa en la práctica? ¿Es incorrecto usarlo para verificar si una estructura es de cierto tipo? Por ejemplo,
public struct Point2D
{
public int X;
public int Y;
...
public override bool Equals(Object value)
{
if (value != null && value is Point2D) // or if (value != null && GetType() == value.GetType())
{
Point2D right = (Point2D)value;
return (X == right.X && Y == right.Y);
}
else return false;
}
...
}
Es erróneo, value.GetType() == typeof (Point2D) lo protege contra accidentes de refactorización. –
Es [este] (http://stackoverflow.com/questions/983030/type-checking-typeof-gettype-or-is) el motivo? – enzom83
@ enzom83 Eso es correcto. 'is' podría ser apropiado para este caso, si le importa heredar de Point2D y desea que los niños también tengan esta misma lógica (de manera predeterminada) – McKay