当前位置: 首页 > news >正文

C# 转换(is和as运算符)

is运算符

之前已经说过了,有些转换是不成功的,并且会在运行时抛出InvalidCastException异常。
我们可以使用is运算符来检查转换是否会成功完成,从而避免盲目尝试转换。
is运算符的语法如下,其中Expr是源表达式:

image
如果Expr可以通过以下方式成功转换为目标类型,则运算符返回true:

  • 引用转换,
  • 装箱转换
  • 拆箱转换
    例如,在如下代码中,使用is运算符来检测Employee类的变量bill是否能转换为Person
    类型,然后进行合适的操作。
class Employee:Person{}class Person
{public string Name="Anonymous";public int Age=25;
}class Program
{static void Main(){Employee bill=new Employee();//检测变量bill是否能转换为Person类型if(bill is Person){Person p=bill;Console.WriteLine($"Person Info:{p.Name},{p.Age}")}}
}

is运算符只可以用于引用转换以及装箱和拆箱转换,不能用于用户自定义转换。

as运算符

as运算符和强制转换运算符类似,只是它不抛出异常。如果转换失败,它返回null而不是
抛出异常。
as运算符的语法如下,其中:

  • Expr是源表达式;
  • TargetType是目标类型,它必须是引用类型。

image
由于as运算符返回引用表达式,它可以用作赋值操作中的源。例如,我们使用as把Employee
类型的变量bill转换为Person类型,并且赋值给一个Person类型的变量P。在使用它之前应该
检查p是否为null。

class Employee:Person{}class Person
{public string Name="Anonymous";public int Age=25;
}class Program
{static void Main(){Employee bill=new Employee();Person p;p=bill as Person;if(p!=null){Console.WriteLine($"Person Info:{p.Name},{p.Age}");}}
}

和is运算符类似,as运算符只能用于引用转换和装箱转换,不能用于用户自定义转换或到
值类型的转换。

http://www.dtcms.com/a/291616.html

相关文章:

  • 【人工智能99问】transformer的编码器和解码器是如何协同工作的?(15/99)
  • 【面经】实习经历
  • Thread 类
  • Java注解家族--`@ResponseBody`
  • 2025杭电多校赛(2)1006 半
  • 微信二维码扫描登录流程详解
  • Pytorch版本、安装和检验
  • 简单讲解HTTPS如何保证安全性和可靠性
  • 网安学习NO.15
  • 树链剖分-苹果树
  • TPS61194PWPRQ1适用于汽车照明低 EMI、高性能 4 通道 LED 驱动器TPS61194
  • Day07_网络编程20250721_大项目
  • sqli-labs靶场通关笔记:第46-53关 order by注入
  • 一文详解REST风格
  • 青少年科学世界名刊分析评介:《生物技术世界》
  • 机器学习中的数据预处理:从入门到实践
  • Spring 对数组和集合类的自动注入
  • 234、回文链表
  • 使用AI把普通的条形柱状图,丰富成“好看高大上”的条形柱状图
  • 解决win10下Vmware虚拟机在笔记本睡眠唤醒后ssh连接不上的问题
  • PyQt5—QInputDialog 学习笔记
  • 印度给巴铁断水,中国悄然开建雅鲁藏布江水电站,纯属巧合!
  • Python 标准库之 os 模块全面讲解
  • 大模型为什么出现幻觉?
  • 在Anolis8.6上源码编译安装部署OpenVAS(GVM)未完待续
  • 华为云CCE-PV使用OBS存储类之坑
  • Android NDK ffmpeg 音视频开发实战
  • 语义化版本规范(SemVer)
  • 【计算机组成原理】符号位OF、ZF、CF、SF详解
  • c语言 进阶 动态内存管理