Cannot take the address of, get the size of, or declare a pointer to a managed type ('type name')

后端 未结 3 619
傲寒
傲寒 2021-01-20 15:56

this error stops compiling if i have one or more System.String in my structs
is there any other way to store strings?

i have tried things like this:

         


        
相关标签:
3条回答
  • 2021-01-20 16:23

    Try the MarshalAs attribute:

    struct Foo
    {
        [MarshalAs(UnmanagedType.LPStr]
        string s;
    }
    
    0 讨论(0)
  • 2021-01-20 16:29

    You can not declare a Pointer to Non-fixed types even if you use "unsafe". To remove this error, You HAVE to specify size of the arrays along with keyword fixed.

    For Example, _C_Name contains 25 bytes. So declare it as:

    private fixed byte _C_Name[25];
    

    Strings are Fixed typed so you was not getting error when you declare them as String. Hope it works for you!

    Regards!

    0 讨论(0)
  • 2021-01-20 16:34

    You can only get the address of a struct if it is blittable, i.e. it doesn't contain references.
    See Blittable and Non-Blittable Types(MSDN)

    0 讨论(0)
提交回复
热议问题