C# | es la palabra clave del operador – Part 1

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *