关于C#的ref引用传参描述怎样理解比较好
发布网友
发布时间:2022-05-19 18:11
我来回答
共1个回答
热心网友
时间:2023-10-15 20:43
这个例子笼统来看,是正确的,但举得确实不怎么高明,如果用它来理解ref,分明有越搅越浑之嫌。如果严格来看,这个例子甚至是不正确的。
我们知道,C#里的数据类型分为两类,一是值类型,一是引用类型。ref只针对值类型使用。值类型有一个最大的特点,就是你把它赋给任何“人”,它都是采用“复制”方式。如果我们也举一个例子,相当于有人来找你出去,作为值类型的你并没有亲自去,而是临时“克隆”了一个自己,派这个“克隆你”去。结果是如何呢?那个克隆的你在外面不管发生了什么事,玩嗨了也好,受伤了也罢,都不会影响你。引用类型就不同了,引用类型的你总是“亲力亲为”,谁叫你你都亲自去,所以任何变化都发生在自己身上。
那么有时候,程序员也希望值类型的你能够直接一些,叫你去就是想对你做些改变,怎么办呢?那就要用ref修饰来明确告诉你,你必须亲自来。当然了,你亲自去的后果就是有什么玩嗨了,受伤了的事情,就直接承受在你自己身上。
总结来说呢,你可以认为,一个加了ref的值类型参数,你可以临时把它看成是一个引用类型。
写完之后,发现这个例子好像也不是特别生动,倒有些恐怖,不知道对你有没有帮助。追问感谢,调试的时候其实看到不用ref修饰后内存地址是不相同的,我就感觉我的那个例子有些不恰当,但是跳转到函数里面后,原来的内存地址是不可用的,就让我很纠结