C# 中的 ref 已經被放開,或許你已經不認識了
阿新 • • 發佈:2020-11-07
## 一:背景
### 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處 也有,簡直是應有盡有,太