C# as 和 is 运算符区别和用法示例解析
前言
在C#中,as 和 is 关键字都用于处理类型转换的运算符,但它们有不同的用途和行为。本文我们将详细解释这两个运算符的区别和用法。
is 运算符
is 运算符用于检查对象是否是某个特定类型,或者是否可以转换为该类型。它返回一个布尔值 (true 或 false)。
string title = "Hello DotNetGuide";
if (title is string)
{
Console.WriteLine("是 string 类型");
}
else
{
Console.WriteLine("不是 string 类型");
}
if (title is not null)
{
Console.WriteLine("不为 null");
}
else
{
Console.WriteLine("为 null");
}模式匹配
C# 7.0 引入了模式匹配,允许在 is 表达式中进行类型检查和转换:
object obj = "追逐时光者";
if (obj is string str)
{
Console.WriteLine($" {str}");
}
else
{
Console.WriteLine("不是指定类型");
}列表模式
从 C# 11 开始,可以使用列表模式来匹配列表或数组的元素。以下代码检查数组中处于预期位置的整数值:
int[] empty = []; int[] one = [1]; int[] odd = [1, 3, 5]; int[] even = [2, 4, 6]; int[] fib = [1, 1, 2, 3, 5]; Console.WriteLine(odd is [1, _, 2, ..]); // false Console.WriteLine(fib is [1, _, 2, ..]); // true Console.WriteLine(fib is [_, 1, 2, 3, ..]); // true Console.WriteLine(fib is [.., 1, 2, 3, _ ]); // true Console.WriteLine(even is [2, _, 6]); // true Console.WriteLine(even is [2, .., 6]); // true Console.WriteLine(odd is [.., 3, 5]); // true Console.WriteLine(even is [.., 3, 5]); // false Console.WriteLine(fib is [.., 3, 5]); // true
as 运算符
as 运算符尝试将对象转换为特定类型,如果转换失败,则返回 null 而不是抛出异常。它通常用于在不需要显式检查对象是否为特定类型的情况下进行安全的类型转换。
注意:as 运算符仅考虑引用、可以为 null、装箱和取消装箱转换。它不支持用户定义的或复杂的类型转换,这种情况需要使用强制转换表达式。
object title = "Hello DotNetGuide";
string str = title as string;
if (str != null)
{
Console.WriteLine("是 string 类型: " + str);
}
else
{
Console.WriteLine("不是 string 类型");
}
int? num = title as int?;
if (num.HasValue)
{
Console.WriteLine("是 int 类型: " + num.Value);
}
else
{
Console.WriteLine("不是 int 类型");
}C#/.NET/.NET Core面试宝典

参考文章
- https://learn.microsoft.com/zh-cn/dotnet/csharp/language-reference/operators/is
- https://learn.microsoft.com/zh-cn/dotnet/csharp/language-reference/operators/type-testing-and-cast#as-operator
到此这篇关于C# as 和 is 运算符区别和用法的文章就介绍到这了,更多相关C# as 和 is 运算符内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
C#创建Windows Service(Windows 服务)的方法步骤
本文介绍了如何用C#创建、安装、启动、监控、卸载简单的Windows Service 的内容步骤和注意事项,具有一定的参考价值,感兴趣的可以了解一下2023-11-11
Graphics.DrawImage绘制的图像变大的原因分析及解决
这篇文章主要介绍了Graphics.DrawImage绘制的图像变大的原因分析及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-11-11
winform C#获得Mac地址,IP地址,子网掩码,默认网关的实例
下面小编就为大家带来一篇winform C#获得Mac地址,IP地址,子网掩码,默认网关的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧2017-01-01


最新评论