📜  如何在C#中不使用is关键字来实现功能

📅  最后修改于: 2021-05-29 18:41:48             🧑  作者: Mango

先决条件:是关键字,并且是关键字

在实现没有is关键字的操作之前,让我们简要地了解一下关键字的实际工作方式。

是关键字

在C#中,关键字用于评估运行时的兼容性。它确定对象实例或表达式的结果是否可以转换为指定的类型。

句法:

expr is type

示例:在下面的代码类中, Program类继承了类c1 ,在“如果条件”中,使用is运算符检查兼容性,该运算符返回true。

// C# program to illustrate the  
// use of 'is' operator keyword 
using System;
  
namespace GeeksforGeeks {
  
// Taking an empty class
class c1 {
  
} 
  
// Program class inherits c1
class Program : c1 
{
  
    // Main Method
    static void Main(string[] args)
    {
  
        // object of Program class
        Program pro1 = new Program(); 
  
        // dynamic check of compatibility.
        // pro1 is the object of Program class
        // and c1 is class which is inherited by 
        // Program class
        if (pro1 is c1) 
        {
            Console.WriteLine("GeeksForGeeks");
        }
    }
}
}
输出:
GeeksForGeeks

是不使用is关键字的实现

可以使用as关键字实现类似的功能,该关键字返回

  • 如果未设置兼容性,则返回null
  • 如果操作数兼容,则返回LHS操作数。

示例:在下面的代码中, c1类的对象是pro2 ,因此无法分配为Program类的实例,因此obj2设置为null,随后将检查if条件。

// C# program to illustrates the is keyword 
// functionality without using is keyword
using System;
  
namespace GeeksforGeeks {
  
// Taking an empty class
class c1 { } 
  
// Class Program inherits the class c1
class Program : c1
{
  
    // Main Method
    static void Main(string[] args)
    {
  
        // Creating the object of Program class
        Program pro1 = new Program();
  
        // Creating the object of c1 class
        c1 pro2 = new c1();
  
        // Here, assigns obj1 with pro1 i.e. 
        // LHS operand as compatibility is set
        var obj1 = pro1 as c1;
  
        // Here, assigns obj2 with null as 
        // compatibility is not set
        var obj2 = pro2 as Program;
  
        // from above, obj1 is not null
        if (obj1 != null) 
        {
            Console.WriteLine("GeeksForGeeks");
        }
  
        // from above, obj2 is null
        if (obj2 != null) 
        {
            Console.WriteLine("This Line will not be printed");
        }
    }
}
}
输出:
GeeksForGeeks

注意:您还可以通过阅读C#中的Is vs As运算符关键字一文,找到is关键字as关键字之间的一些显着差异。