Se comprueba si el objeto es un miembro de ese tipo, o de un tipo que hereda de o implementa el tipo base o interfaz. En cierto modo, verifica si el objeto puede convertirse a dicho tipo.
command is OracleCommand
devuelve falso, ya que es un SqlCommand
, no un OracleCommand
. Sin embargo, tanto command is SqlCommand
como command is DbCommand
devolverán verdadero ya que es un miembro de ambos tipos y, por lo tanto, pueden ser downcast o upcast a, respectivamente.
Si tiene tres niveles de herencia, p. BaseClass
, SubClass
y SubSubClass
, un objeto inicializado como new SubClass()
solo devuelve verdadero para is BaseClass
y . Aunque SubSubClass
se deriva de ambos, el objeto en sí no es una instancia de este, por lo que is SubSubClass
devuelve falso.
¿No sería falso el resultado, porque ni DbCommand ni SqlCommand son instancias de OracleCommand? –
'is' indica si un objeto es una instancia del tipo o derivada del mismo. http://msdn.microsoft.com/en-us/library/scekt9xw(v=VS.100).aspx – Jon
@they: ¿No son esas dos definiciones las mismas? – Mehrdad