6_as和is的区别
as和is的区别
- 
is 只是做类型兼容判断,并不执行真正的类型转换。返回true或false,不会返回null,对象为null也会返回false。 
- 
as运算符将表达式结果显式转换为给定的引用类型或可以为null值的类型。 如果无法进行转换,则as运算符返回 null。 
总结:as模式的效率要比is模式的高,因为借助is进行类型转换的化,需要执行两次类型兼容检查。而as只需要做一次类型兼容,一次null检查,null检查要比类型兼容检查快。
is 关键字:
is 关键字用于判断一个对象是否兼容于指定的类型。它会返回一个 bool 值,指示对象是否与指定类型兼容。
示例:
// 定义一个对象
object obj = new Person();
// 使用 is 关键字判断对象是否为 Person 类型
bool isPerson = obj is Person;
// 打印结果
Console.WriteLine(isPerson); // True
as 运算符:
as 运算符用于将对象转换为指定的类型。如果转换成功,则返回转换后的对象;如果转换失败,则返回 null。
示例:
// 定义一个对象
object obj = new Person();
// 使用 as 运算符将对象转换为 Person 类型
Person person = obj as Person;
// 判断转换是否成功
if (person != null)
{
  // 转换成功,执行操作
  Console.WriteLine("转换成功!");
}
else
{
  // 转换失败
  Console.WriteLine("转换失败!");
}
总结:
- is关键字用于判断类型兼容性,而- as运算符用于执行类型转换。
- is关键字返回- bool值,而- as运算符返回转换后的对象或- null。
- as模式的效率要比- is模式的高,因为- as只需要进行一次类型兼容检查和一次 null 检查,而- is需要进行两次类型兼容检查。
建议:
- 当只需要判断类型兼容性时,使用 is关键字。
- 当需要执行类型转换时,使用 as运算符。
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号