在 C# 中,asis 是用于类型转换和类型检查的两个运算符,它们的用法和语义有所不同。

is 运算符

is 运算符用于检查一个对象是否是某个特定类型的实例。它返回一个布尔值 (truefalse)。

用法示例:

object obj = "Hello, World!";
if (obj is string)
{
    Console.WriteLine("obj 是一个字符串");
}

在这个示例中,is 运算符检查 obj 是否是 string 类型的实例。如果是,它将输出相应的消息。

as 运算符

as 运算符用于将一个对象转换为指定的类型。如果对象的类型可以转换,它将返回该类型的实例;如果不能转换,它将返回 null 而不是抛出异常。

用法示例:

object obj = "Hello, World!";
string str = obj as string;

if (str != null)
{
    Console.WriteLine($"obj 转换为字符串: {str}");
}

在这个示例中,as 运算符尝试将 obj 转换为 string 类型。如果转换成功,str 将持有该字符串的值;如果转换失败,str 将为 null

总结

  • is 运算符:用于检查类型,返回布尔值。
  • as 运算符:用于安全地转换类型,返回指定类型的实例(如果转换成功)或 null(如果失败)。

注意事项

  • 使用 as 运算符时,如果目标类型是值类型(如 intbool 等),则不能直接使用 as,因为它仅适用于引用类型。
object obj = 123;
int? number = obj as int?; // 正确,转换为可空类型
  • 使用 is 运算符时,通常可以与模式匹配结合使用,以简化代码:
if (obj is string str)
{
    Console.WriteLine($"obj 是一个字符串: {str}");
}

这种方式在 C# 7.0 及以上版本中引入,允许在检查类型的同时进行变量声明。

最后修改:2025 年 01 月 24 日
如果觉得我的文章对你有用,请随意赞赏