C# is和as操作符的区别与应用场景 - 安全的类型转换技巧

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

C# is和as操作符的区别与应用场景 - 安全的类型转换技巧-第1张图片-佛山资讯网

在C#中进行类型转换时,isas 操作符常被使用,它们都能用于判断对象是否可以安全地转换为某一类型,但机制和适用场景不同。理解它们的差异有助于写出更高效、更安全的代码。

is 操作符:类型检查

is 操作符用于判断一个对象是否属于某个特定类型或能隐式转换为该类型。它只返回布尔值,不执行实际转换。

例如:

object obj = "Hello";
if (obj is string) {
    Console.WriteLine("obj 是字符串类型");
}

这段代码仅做判断,如果想获取转换后的 string 类型变量,还需再次转换:

string str = (string)obj; // 需要额外强制转换

这意味着使用 is 后再强转,实际上进行了两次类型检查,影响性能。

as 操作符:安全转换

as 操作符尝试将对象转换为指定类型,如果失败则返回 null(引用类型)或可空值类型的 null 值,不会抛出异常。

标签: 类型转换 c# 区别 编译错误 隐式转换

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~