第二章 深入C#数据类型

本文详细介绍了C#中的值类型和引用类型,包括它们的存储方式和赋值行为。接着讨论了结构(Struct)的特点,如不能直接初始化字段,并给出了使用示例。此外,还探讨了装箱和拆箱的过程及其在性能上的影响。最后,讲解了不同类型的参数传递,包括值传递、引用传递(ref)及其在值类型和引用类型上的应用,强调了在参数传递中应注意的性能问题。
摘要由CSDN通过智能技术生成

第二章 深入C#数据类型

复习-常用数据类型
在这里插入图片描述

一、值类型和引用类型的概念

在这里插入图片描述
值类型:1.不同的变量会分配不同的存储空间,存储空间中存储的是该变量的值 。(改变一个变量值不会影响另一个变量值)
引用类型:赋值是把原对象的引用传递给另一个引用两个引用指向同一块内存空间

二、结构

语法:
在这里插入图片描述
特点:①结构中可以有字段,也可以有方法。
②定义时,结构中的字段不能被赋初始值。
结构的使用:①可以不用new,直接定义结构的对象即可。
②声明结构的对象后,必须给结构的成员赋初始值。
示例:
public struct Student
{
public int id; //ID ⇨字段不能直接赋初值
public int age; //年龄

    public void Show()           ⇨<font color=red >成员方法</font>
    {
          Console.WriteLine("ID:{0}\n年龄:{1}",id,age);
    }

结构的使用经验:当对象需要用较少的字段来表示时,可以选用结构。
结构是值类型,数据提取速度快。
但是频繁的赋值操作会占用较大空间, 在开发中多数情况下都定义为类!!!

三、装箱和拆箱

1.值类型和引用类型之间的转换
在这里插入图片描述

示例:
static void Main(string[] args)
{
int i = 123;
object o = i; // 装箱
int j = (int)o; //拆箱 ⇨与值类型的变量类型要一致
经验:在实际的开发中,应该尽量减少不必要的装箱和拆箱。因为二者的存储方式不同,转换时性能损失较大

四、不同类型的参数传递

复习-值传递和引用传递
在这里插入图片描述

使用值传递,在方法中对参数值的更改在调用后不能保留;使用 ref 方式传递,可以将对参数值的更改保留

1.值方式传递引用类型参数⇨参数在方法中被修改
示例:
//传递引用类型参数
SE zhang = new SE();
//…省略其他赋值
zhang.Popularity = 10;
Voter voter = new Voter();
voter.Vote(zhang); ⇨参数zhang在Vote()调用后发生了变化
MessageBox.Show(zhang.SayHi());

public void Vote(SE se) ⇨按引用传递
{
//人气值增加1
se.Popularity++;
}
2.值方式传递值类型参数⇨①结构:StructSE ②不会被修改
示例:
//传递值类型参数
StructSE structZhang = new StructSE(); //创建SE结构
//…省略其他赋值
structZhang.Popularity = 10;
Voter voter = new Voter();
voter.Vote(structZhang); ⇨两次的人气值相同,参数在程序中未发生变化
MessageBox.Show(structZhang.SayHi());

public void Vote(StructSE se) ⇨值传递
{
//人气值增加1
se.Popularity++;
}
3.引用方式传递
①:ref 引用方式传递引用类型参数:
public void Vote(ref SE se) ⇨调用Vote()前后人气值发生变化,保留对参数的修改
{
//人气值增加1
se.Popularity++;
}
②:ref 引用方式传递值类型参数:
public void Vote(ref StructSE se) ⇨调用Vote()前后人气值发生变化,保留对参数的修改
{
//人气值增加1
se.Popularity++;
}

4.不同类型参数传递
在这里插入图片描述

总结:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值