En el desarrollo del software, el encasillamiento es algo ineludible. En muchos casos, uno necesita convertir un objeto (Tipo) en otro objeto (Tipo) y, a veces, obtiene InvalidCastException . Por lo tanto, para superar este tipo de excepciones, C# proporciona el operador .
El operador is se usa para verificar si el tipo de tiempo de ejecución de un objeto es compatible con el tipo dado o no. Devuelve verdadero si el objeto dado es del mismo tipo; de lo contrario, devuelve falso . También devuelve falso para objetos nulos .
Sintaxis:
expression is type
Aquí, la expresión se evaluará como una instancia de algún tipo. Y tipo es el nombre del tipo al que se va a convertir el resultado de la expresión . Si la expresión no es nula y el objeto resultante de la evaluación de la expresión se puede convertir al tipo especificado, entonces el operador devolverá verdadero ; de lo contrario, devolverá falso .
Ejemplo 1: En el siguiente código, tenemos tres clases, es decir, Author, Work y GFG. GFG es la clase de controlador que contiene el método principal. Las clases ‘Autor’ y ‘Trabajo’ tienen miembros de datos y método. En el método Main, los objetos de claseEl autor y el trabajo creado y los métodos de estas clases se llaman utilizando la instancia de la clase. Después de eso, un resultado bool de valor bool; se toma para almacenar el valor de retorno de su operador. La línea de código, es decir, resultado = a es Autor; se utiliza para verificar si un (objeto de clase autor) es de tipo Autor. Devolverá verdadero ya que a es la instancia de la clase Author. Pero la instancia w no es de tipo Autor, por eso devuelve falso. Después de eso, estamos asignando nulo al objeto a que dará un resultado falso en comparación con una instancia de Autor.
Csharp
// C# program to illustrate the // use of 'is' operator keyword using System; class Author { // data members public string name; public int rank; // method of Author class public void details(string n, int r) { name = n; rank = r; } } class Work { // data members public int articl_no; public int improv_no; // method of Work class public void totalno(int a, int i) { articl_no = a; improv_no = i; } } // Driver Class public class GFG { // Main method static public void Main() { // Creating objects of // Author and Work class Author a = new Author(); a.details("Ankita", 5); Work w = new Work(); w.totalno(80, 50); bool result; // Check 'a' is of Author // type or not // Using is operator result = a is Author; Console.WriteLine("Is a is Author? : {0}", result); // Check w is of Author type // using is operator result = w is Author; Console.WriteLine("Is w is Author? : {0}", result); // Take the value of a is null a = null; // Check null object // Using is operator result = a is Author; Console.WriteLine("Is a is Author? : {0}", result); } }
Producción:
Is a is Author? : True Is w is Author? : False Is a is Author? : False
Ejemplo 2: en el siguiente programa, estamos comprobando si el tipo derivado es del tipo de expresión en el lado izquierdo del operador is . Si se deriva, devolverá verdadero; de lo contrario, devolverá falso.
Csharp
// C# program to illustrate the // use of is operator keyword using System; // taking a class public class G1 { } // taking a class // derived from G1 public class G2 : G1 { } // taking a class public class G3 { } // Driver Class public class GFG { // Main Method public static void Main() { // creating an instance // of class G1 G1 obj1 = new G1(); // creating an instance // of class G2 G2 obj2 = new G2(); // checking whether 'obj1' // is of type 'G1' Console.WriteLine(obj1 is G1); // checking whether 'obj1' is // of type Object class // (Base class for all classes) Console.WriteLine(obj1 is Object); // checking whether 'obj2' // is of type 'G2' Console.WriteLine(obj2 is G2); // checking whether 'obj2' is // of type Object class // (Base class for all classes) Console.WriteLine(obj2 is Object); // checking whether 'obj2' // is of type 'G1' // it will return true as G2 // is derived from G1 Console.WriteLine(obj2 is G1); // checking whether obj1 // is of type G3 // it will return false Console.WriteLine(obj1 is G3); // checking whether obj2 // is of type G3 // it will return false Console.WriteLine(obj2 is G3); } }
Producción:
True True True True True False False
Nota:
- La palabra clave del operador is solo tiene en cuenta las conversiones de referencia, boxing y unboxing .
- Las conversiones definidas por el usuario o las conversiones que se definen mediante implícito y explícito no se consideran consideradas por su operador. Para las conversiones que se conocen en el momento de la compilación o que maneja un operador implícito , este operador dará advertencias al respecto.
Publicación traducida automáticamente
Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA