Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Аналог записи с условием Delphi в C#


Автор: ajunta 2.7.2008, 11:03
Здравствуйте!

Скажите пожалуйста, есть ли в C# аналог записи с усовием из Delphi?

В Delphi имела место конструкция вида:


Код

type TMyRecord = record
    field1:integer;
    field2:real;
    case StrOrInt:boolean of
        true: (str:string[255]);
        false: (int:integer);
end;


То есть это обычная запись, но память для полей str и int выделяется в зависимости от значения переменной StrOrInt.

Возможно ли создать в C# класс, либо структуру с аналогичной идеей?

Автор: altarvic 2.7.2008, 11:42
Если не вру, то память для полей str и int выделяется одна, по максимому (255)
На C# примерно так (но эта запись используется в основном для взаимодействия с неуправляемым кодом, иначе не вижу смысла зачем это нужно)
Код

    [StructLayout(LayoutKind.Explicit)]
    internal struct A
    {
        [FieldOffset(0)]
        int field1;

        [FieldOffset(4)]
        double field2;

        [FieldOffset(12)] 
        bool StrOrInt;

        [FieldOffset(14)] 
        string String;

        [FieldOffset(14)] 
        int Number;
    }

Автор: Любитель 2.7.2008, 14:51
Цитата(ajunta @  2.7.2008,  11:03 Найти цитируемый пост)
То есть это обычная запись, но память для полей str и int выделяется в зависимости от значения переменной StrOrInt.

Память как раз выделяется под поля, которые занимают максимум памяти. А StrOrInt реально ни на что не влияет.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)