Передача ссылки на значение в структуре в 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 с обсуждением этой ситуации (и почему компилятор вообще позволяет вам это делать).

Другие вопросы по тегам