先决条件:是关键字,并且是关键字
在实现没有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关键字之间的一些显着差异。