在 C# 11 中传递对结构中值的引用

nop*_*nop 1 .net c# c#-11.0

我无法在 C# 11 中传递对结构中值的引用。我该怎么做?

未处理的异常。System.NullReferenceException:未将对象引用设置为对象的实例。在路径\Program.cs 中的 CustomRef..ctor(Double& number) 处:第 17 行 在路径\Program.cs 中的 Program.$(String[] args) 处:第 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

Evk*_*Evk 5

您需要使用 ref 修饰符分配 ref 字段:

public CustomRef(ref double number)
{        
    _number = ref number; // < note ref here
}
Run Code Online (Sandbox Code Playgroud)

这是github 问题,其中包含有关这种情况的一些讨论(以及为什么编译器甚至允许您这样做)。