struct Foo {
    int i;
    public ref int I => ref i;
}
This code raises compile error CS8170, but if Foo is a class, it doesn't. Why can a structure not return a member as a reference?
struct Foo {
    int i;
    public ref int I => ref i;
}
This code raises compile error CS8170, but if Foo is a class, it doesn't. Why can a structure not return a member as a reference?
I think I found a way around it:
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;
    }
}
Not that its a good idea- too many dire warnings. However, I do believe it is achieving what you want by returning a reference to the struct member, which you can then marshal to get the original value.
