当前位置: 代码网 > it编程>编程语言>C# > C# as 和 is 运算符区别和用法示例解析

C# as 和 is 运算符区别和用法示例解析

2025年02月13日 C# 我要评论
前言在c#中,as 和 is 关键字都用于处理类型转换的运算符,但它们有不同的用途和行为。本文我们将详细解释这两个运算符的区别和用法。is 运算符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面试宝典

参考文章

到此这篇关于c# as 和 is 运算符区别和用法的文章就介绍到这了,更多相关c# as 和 is 运算符内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com