news 2026/4/30 14:10:32

C#显示转换和隐式转换

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C#显示转换和隐式转换

显示转换和隐式转换

为什么要转换?

类型转换,把一个类型转成另外一个类型,C#分为显示转换和隐式转换,主要区分点在于需不需要我们自己写代码进行转化,是否存在数据丢失问题。(编译器是否自动转换、是否存在数据丢失问题

隐式转换

编译器自动转换,并且不存在数据丢失的场景(例如值类型把小空间的数赋值给大空间的变量 如

int a=10;

double b=a;//编译器自动转换

Console.WriteLine(b);//10 数据没有丢失

把派生类赋值给基类对象

class Aninmal{} class Cat:Aninmal { public void Speak() { Console.WriteLine("miao"); } }

Aninmal aninmal基类 new Cat();派生类
Aninmal aninmal = new Cat();//派生类对象

规则

值类型:小区间往大区间可以转换

引用类型:把子类对象赋值给父类对象

有符号不能往无符号去转换

显示转换

什么是显示转换

需要我们自己写转换代码,但会出现数据丢失的情况

语法:(需要转换的类型)变量:(int)a

值类型显示转换

int a1 = 300;
byte a2 = (byte)a1;//出现数据丢失
Console.WriteLine(a2);//44
int a3 = -129;
uint a4 = (uint)a3;
Console.WriteLine(a4);// 出现数据丢失

引用类型的显示转换

本质上是Animal对象,转成Cat,转换失败,程序会直接崩溃
Aninmal aninmal1= new Aninmal();//父类对象
Cat cat = (Cat)aninmal1;//强制转换cat类型,但是本质上是Animal对象,本质不能这样做,但是编译不会报错
cat.Speak();报错

as和is

如果想要类型安全转换,不让程序崩溃,可以通过as和is进行转换

Aninmal aninmal1 = new Aninmal();
Cat cat = aninmal1 as Cat;//如果转成失败为null 防止程序崩溃
if (cat != null) { cat.Speak(); }

if(aninmal1 is Cat c)//先判断再转换,aninmal是不是Cat对象,如果是Cat对象,转成c对象
{
c.Speak();//能调用但执行不了
}

is和as的区别

as先类型判断,在进行转换,转换失败为null,永远不抛异常、使用范围:不能使用值类型

is只有判断,如果写成aninmal1 is Cat c(模式匹配)这种类型,可以先判断在转换、返回值为true和false、可以使用任意类型

注意

//如果本质是Cat对象,强制转成Cat对象,可以整除转换
Aninmal aninmal2 = new Cat();//本质上是cat对象,
Cat cat1 = (Cat)aninmal2;
cat1.Speak();//能打印

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 6:57:34

Java计算机毕设之基于SpringBoot+Web的影视资源管理系统设计与实现基于Web的影视资源管理系统设计与实现(完整前后端代码+说明文档+LW,调试定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/5/1 5:47:07

揭秘Open-AutoGLM云主机底层架构:GPU利用率提升3倍的秘密

第一章:揭秘Open-AutoGLM云主机底层架构:GPU利用率提升3倍的秘密Open-AutoGLM云主机通过重构底层计算调度架构,实现了GPU资源利用率相较传统部署模式提升近3倍。其核心在于动态负载感知与异构内存管理的深度融合,打破了以往GPU空转…

作者头像 李华
网站建设 2026/4/30 11:19:42

如何用TensorFlow优化定价精算模型?

如何用TensorFlow优化定价精算模型? 在金融、保险和零售等行业,一个看似简单的数字——价格,背后往往隐藏着复杂的博弈。它不仅要覆盖成本、应对竞争,还要精准捕捉客户心理与市场波动。传统定价依赖经验公式和线性回归模型&#x…

作者头像 李华
网站建设 2026/5/1 8:01:27

Docker企业级应用-生产级 MySQL8 多实例(3306/3307)全生命周期管理手册

文章目录 生产级MySQL8多实例(3306/3307)全生命周期管理手册 文档概述 1.1 文档目的 1.2 适用场景 1.3 核心设计原则 1 部署规划(生产级标准) 1.1 资源规划 1.2 部署文件结构 2 部署实施 2.1 核心配置编写 2.1.1 docker-compose.yml(生产级完整版) 2.1.2 自定义配置文件(…

作者头像 李华
网站建设 2026/5/1 5:50:51

TensorFlow在新闻摘要自动生成中的准确率评测

TensorFlow在新闻摘要自动生成中的准确率评测 在信息洪流席卷每一个数字终端的今天,用户每天面对成千上万条新闻推送。如何从一篇长达数千字的报道中快速提炼出核心事实?这不仅是读者的需求,更是媒体平台提升内容分发效率的关键挑战。自动摘…

作者头像 李华
网站建设 2026/5/1 5:49:49

如何用TensorFlow优化产品描述文案?

如何用 TensorFlow 优化产品描述文案? 在电商内容运营的日常中,一个看似不起眼却影响巨大的环节正悄然发生变革:产品描述的撰写。过去,一支文案团队可能需要数小时甚至数天来打磨一款新手机或家电的宣传语;而今天&…

作者头像 李华