Reading c++ structure offsets in memory without loading (marshaling) the whole structure from c#

I know i can load (marshal as managed) the whole structure in my c# program, but i want instead to just peek an offset i need at time and probably gain speed and code lines. So, thus far i tried two ways to do it.

1. Using enums:

//---------------- Enums example ---------------

public enum AsEnum
{
    SimpleField1 =      0,
    SimpleField2 =      1,
    DoubleField3 =      3,
    SimpleField4 =      5,
    SimpleFieldArray5 = 6,    //array of 10 ints
    SimpleField6 =      5,
    DoubleField7 =      16
}

//the address of the c++ structure in memory. 0x10000000 for example.    
public int PtrToCppStructureEnum = 0x10000000;

//Note that i injected my assembly to the target c++ process
//I need to read SimpleField6 for example

public int ReadSimpleField6_WithEnum =>
    Marshal.PtrToStructure<int>
    (new IntPtr(PtrToCppStructureEnum + (int)AsEnum.SimpleField6 * sizeof(int)));

2. Using unsafe pointer:

//---------------- Pointer example ---------------

[StructLayout(LayoutKind.Sequential, Pack = 1)]
public unsafe struct AsStruct           //offset (for x86)
{                                   //--------------------
    public int SimpleField1;                //0
    public int SimpleField2;                //4
    public long DoubleField3;               //8
    public int SimpleField4;                //16
    public fixed int SimpleFieldArray5[10]; //20
    public int SimpleField6;                //60
    public long DoubleField7;               //64
}                                    // end = 72

//the address of the c++ structure in memory. 0x10000000 for example. 
public unsafe AsStruct* PtrToCppStructure = (AsStruct*)0x10000000;

//Note that i injected my assembly to the target c++ process
//I need to read SimpleField6 for example

public unsafe int ReadSimpleField_WithStruct => PtrToCppStructure->SimpleField6;

Conclusion

Which of the above is better? Maybe both are not good?
Personally, i like the 2nd one because is more clean and readable.
Thanks!

Reading c++ structure offsets in memory without loading (marshaling) the whole structure from c#