2020.7.5C#基础杂记

Posted dotNET学习天地

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2020.7.5C#基础杂记相关的知识,希望对你有一定的参考价值。

ref和out

横眉冷对千夫指,俯首甘为孺子牛。

首先明确C#两大数据类型分别是值类型数据和引用类型数据。

值类型数据:直接存储其值,存储在堆栈当中(stack),变量间赋值是值拷贝。

值类型:

整型:byte(0~255),sbyte(-128~127),short,ushort,int,uint,long,ulong

浮点类型:float,double

bool类型:bool

字符类型:char

枚举(enum),结构(struct)

引用类型:

object(所有的类的基类是object),string,类等等

ref参数:

我们都知道上述代码执行,结果肯定是100。变量的有效性是有作用域的,c本身只在main方法中起作用。但是我们可以通过引用传递值类型,添加ref修饰符,使得可以传递c对象本身。

2020.7.5C#基础杂记

2020.7.5C#基础杂记

这里为什么说是c对象本身,而不是c的值呢?

2020.7.5C#基础杂记

大家觉得,输出结果会是多少呢?

答案是2,而不是3.如下图所示

2020.7.5C#基础杂记

这时加上ref关键字,就可传递a对象本身。如下图,输出结果为3.

2020.7.5C#基础杂记


out参数:

如果方法返回多个值,可能类型还不同,该怎么办?这里有不同的选项。第一种就是定义dto,将要返回的全部定义为model的成员;第二种就是使用元组类型:Tuple<T1,T2,T3...>;第三种就是使用out关键字。

Tuple元组:

2020.7.5C#基础杂记

2020.7.5C#基础杂记

out参数:

c变量不需要预先初始化,但是在方法内必须赋值,而ref则不必一定要在方法内赋值。


以上是关于2020.7.5C#基础杂记的主要内容,如果未能解决你的问题,请参考以下文章

(基础杂记) —— 2021-07-13 —— 牛客刷题错题记录

(基础杂记) —— 2021-07-13 —— 牛客刷题错题记录

(基础杂记) —— 2021-07-13 —— 牛客刷题错题记录

MongoDB基础命令杂记

js基础杂记

[原创]商城系统下单库存管控系列杂记(并发安全和性能基础认识)