C# 中的 ref 已经被放开,或许你已经不认识了

Posted DotNet

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 中的 ref 已经被放开,或许你已经不认识了相关的知识,希望对你有一定的参考价值。

(给DotNet加星标,提升.Net技能

转自:一线码农
cnblogs.com/huangxincheng/p/13939828.html

一、背景


1、讲故事


最近在翻 netcore 源码看,发现框架中有不少的代码都被 ref 给修饰了,我去,这还是我认识的 ref 吗?就拿 Span 来说,代码如下:


public readonly ref struct Span<T>
{
public ref T GetPinnableReference()
{
ref T result = ref Unsafe.AsRef<T>(null);
if (_length != 0)
{
result = ref _pointer.Value;
}
return ref result;
}
public ref T this[int index]
{
get
{
return ref Unsafe.Add(ref _pointer.Value, index);
}
}
}


是不是到处都有 ref,在 struct 上有,在 local variable 也有,在 方法签名处 也有,在 方法调用处 也有,在 属性 上也有, 在 return处 也有,简直是应有尽有,太

以上是关于C# 中的 ref 已经被放开,或许你已经不认识了的主要内容,如果未能解决你的问题,请参考以下文章

C#语法糖系列 —— 第二篇:聊聊 ref,in 修饰符底层玩法

C#中的const形参

在 C# 中使用“ref”关键字 [重复]

C#中ref和out的使用小结

2019 - 展望技术篇

HDFS进阶——文件存储和读写流程