1. 程式人生 > >C# 中的 ref 已經被放開,或許你已經不認識了

C# 中的 ref 已經被放開,或許你已經不認識了

## 一:背景 ### 1. 講故事 最近在翻 netcore 原始碼看,發現框架中有不少的程式碼都被 ref 給修飾了,我去,這還是我認識的 ref 嗎?就拿 Span 來說,程式碼如下: ``` C# public readonly ref struct Span { public ref T GetPinnableReference() { ref T result = ref Unsafe.AsRef(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處 也有,簡直是應有盡有,太