我无法在 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)
您需要使用 ref 修饰符分配 ref 字段:
public CustomRef(ref double number)
{
_number = ref number; // < note ref here
}
Run Code Online (Sandbox Code Playgroud)
这是github 问题,其中包含有关这种情况的一些讨论(以及为什么编译器甚至允许您这样做)。
| 归档时间: |
|
| 查看次数: |
98 次 |
| 最近记录: |