c#基础04(类型转换)

文章目录

类型转换

类型转换分为:强制转换(显示转换)与隐式转换

按内存分类:装箱、拆箱

隐式转换

隐式转换条件:对于整数类型,源类型的范围是目标类型范围的正确子集。可以由小类型往大类型转,例如:int -> double,不能由double -> int。

强制转换

如果进行转换可能会导致信息丢失,则编译器会要求执行显示转换,显示转换也称为强制转换。

示例:

c# 复制代码
double x = 3.1415926;
int a;
//double ==> int
a = (int)x;
a = Covert.ToInt32(x);
c# 复制代码
int a = 30;
//转换为字符串
string s1 = a.ToString();
string s2 = Convert.ToString(a);

关键字as :用于进行安全的引用类型转换。as不能用于值类型,智能用于引用类型。

应用类型之间的转换:

c# 复制代码
class Program
{
    static void Main(string[] args)
    {
        object per = new Person();//创建一个类对象
        Person person1 = per as Person;//使用as进行强制转换
        Person person2 = (Person)per;//强制转换
    }
}
//声明一个类
class Person
{
    
}

装箱与拆箱

装箱:把值类型转换成引用类型

拆箱:把引用类型转换成值类型

装箱示例:

c# 复制代码
int num = 10;//值类型,存储在栈内存
object obj = num;//装箱操作:将num转换为object类型

内存分配

  • 装箱操作会将值类型的值复制到堆内存中。
  • 堆内存中的对象包含值类型的值,并且会占用额外的内存空间。
  • 装箱操作会增加内存分配的开销。

拆箱示例:

c# 复制代码
int num = 10; //值类型
object obj = num; // 装箱操作
int un = (int)obj;//拆箱操作:将object转换回int

注意

  • 拆箱操作必须显示进行类型转换。
  • 拆箱操作只会成功,如果引用类型确实包含对应的值类型。
相关推荐
aashuii1 小时前
go客户端ssh交换机
开发语言·golang·ssh
是紫焅呢1 小时前
E结构体基础.go
开发语言·后端·golang·学习方法·visual studio code
clt1233211 小时前
golang excel导出时需要显示刷新
开发语言·后端·golang
Silverdew*1 小时前
vs code配置go开发环境以及问题解决 could not import cannot find package in GOROOT or GOPATH
开发语言·后端·golang
周圣贤3 小时前
九尾狐编程语言新算法“超维时空演算体”
开发语言·算法
CaracalTiger4 小时前
HTTP 协议的基本概念(请求/响应流程、状态码、Header、方法)问题解决方案大全
开发语言·网络·python·深度学习·网络协议·http·pip
随缘而动,随遇而安4 小时前
第八十二篇 大数据开发基础:树形数据结构深度解析与实战指南(附创新生活案例)
大数据·开发语言·数据结构
西猫雷婶5 小时前
python学智能算法(十三)|机器学习朴素贝叶斯方法进阶-简单二元分类
开发语言·人工智能·python·深度学习·机器学习·矩阵·分类
武子康6 小时前
Java-49 深入浅出 Tomcat 手写 Tomcat 实现【02】HttpServlet Request RequestProcessor
java·开发语言·后端·学习·spring cloud·tomcat
张朝阳的博客6 小时前
哈夫曼树Python实现
开发语言·python