gpt4 book ai didi

c# - 为什么 C# 结构不能返回对其成员字段的引用?

转载 作者:可可西里 更新时间:2023-11-01 08:29:18 25 4
gpt4 key购买 nike

struct Foo {
int i;
public ref int I => ref i;
}

此代码引发编译错误 CS8170,但如果 Foo 是一个类,则不会。为什么结构不能返回成员作为引用?

最佳答案

我想我找到了解决方法:

class Program
{
static void Main(string[] args)
{
Foo temp = new Foo(99);
Console.WriteLine($"{Marshal.ReadInt32(temp.I)}");
Console.ReadLine();
}
}
struct Foo
{
int i;
public IntPtr I;

public Foo(int newInt)
{
i = newInt;
I = GetByRef(i);
}
static unsafe private IntPtr GetByRef(int myI)
{
TypedReference tr = __makeref(myI);
int* temp = &myI;
IntPtr ptr = (IntPtr)temp;
return ptr;
}
}

这不是一个好主意 - 太多可怕的警告。但是,我确实相信它通过返回对结构成员的引用来实现您想要的,然后您可以对其进行编码以获取原始值。

关于c# - 为什么 C# 结构不能返回对其成员字段的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49188391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com