is仅判断类型并返回布尔值,不执行转换;as尝试安全转换,失败返回null且只检查一次类型。C# 7.0+支持is模式匹配(如if(obj is string str))实现判断与赋值一体化。

在C#中进行类型转换时,is 和 as 操作符常被使用,它们都能用于判断对象是否可以安全地转换为某一类型,但机制和适用场景不同。理解它们的差异有助于写出更高效、更安全的代码。
is 操作符:类型检查
is 操作符用于判断一个对象是否属于某个特定类型或能隐式转换为该类型。它只返回布尔值,不执行实际转换。
例如:object obj = "Hello";
if (obj is string) {
Console.WriteLine("obj 是字符串类型");
}
这段代码仅做判断,如果想获取转换后的 string 类型变量,还需再次转换:
string str = (string)obj; // 需要额外强制转换
这意味着使用 is 后再强转,实际上进行了两次类型检查,影响性能。
as 操作符:安全转换
as 操作符尝试将对象转换为指定类型,如果失败则返回 null(引用类型)或可空值类型的 null 值,不会抛出异常。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~