2013-02-20 3 views
0

Я столкнулся с использованием StructLayoutAttribute, но я не знаю, как это полезно для использования. У меня есть такая структура, какЧто является преимуществом StructLayoutAttribute в C# struct

[StructLayout(LayoutKind.Sequential)] 
public struct XYData 
{ 

    public int x; 

    public int y; 

    public XYData(int x, int y) 
    { 
     this.x = x; 
     this.y = y; 
    } 
} 

Применение атрибута StructLayoutAttribute поможет нам?

+0

В чем проблема? –

+0

Ответ, скорее всего, нет, и, вероятно, вам не следует использовать структуру ... Но описание вашей проблемы, когда вам нужно использовать struct, может привести к более детальному ответу. –

+0

Ничего, структура структуры уже является последовательной. – leppie

ответ

2

Как указано в StructLayoutAttribute C# уже используется для Sequential структуры. Таким образом, технически нет никакого влияния на добавление этого атрибута:

Компиляторы C#, Visual Basic и C++ применяют значение Sequential layout для структур по умолчанию.

Вы можете смело добавить это значение в свою структуру в коде C#, поскольку оно будет явно документировать намерение, но оно необязательно.

Если вы излучаете структуру самостоятельно или используете IL напрямую, вам необходимо указать ее.

Обратите внимание, что для классов вам необходимо указать Sequential непосредственно, если вы обнаружите, что вам нужен особый макет полей в классе.

0

Только если эта структура маршалируется неуправляемого кода

See MSDN Remarks

+0

Макет структуры уже является последовательным. – leppie

Смежные вопросы