Передача ссылки на значение в структуре в C# 11
Я не могу передать ссылку на значение в структуре в C# 11. Как мне это сделать?
Необработанное исключение. System.NullReferenceException: ссылка на объект не указывает на экземпляр объекта. в CustomRef..ctor(Double& number) в path\Program.cs:строка 17 в Program.$(String[] args) в path\Program.cs:строка 4
using System.Runtime.CompilerServices;
var x = 1.1;
var myTuple = new CustomRef(ref x);
x = 2.2;
Console.WriteLine(x); // Outputs 2.2
Console.WriteLine(myTuple.GetNumber()); // Outputs 2.2
public ref struct CustomRef
{
private readonly ref double _number;
public CustomRef(ref double number)
{
_number = number;
}
public double GetNumber()
{
if (Unsafe.IsNullRef(ref _number))
{
throw new InvalidOperationException("The number ref field is not initialized.");
}
return _number;
}
}
1 ответ
Вам нужно назначить поле ref с помощью модификатора ref:
public CustomRef(ref double number)
{
_number = ref number; // < note ref here
}
Вот проблема github с обсуждением этой ситуации (и почему компилятор вообще позволяет вам это делать).