Given that C# GC can move memory around, how could ref-return even be implemented? Would the code below cause 'undefined behaviour'?
public struct Record
{
public int Hash;
public VeryLargeStruct Data;
}
public class SomeClass
{
private Record[] _records = new Record[16];
public ref VeryLargeStruct GetDataAt(int index) =>
ref _records[index].Data;
}
I would assume that if memory associated with _records reference moved that it would invalidate local references such as:
ref var data = ref someClassInstance.GetDataAt(0);