Как определить тип перечисления как float или double в c # - PullRequest
4 голосов
/ 04 декабря 2011

Здесь говорится здесь , что возможные типы для enum: byte, sbyte, short, ushort, int, uint, long,или ulong.

Что если мне понадобится float или double для определения процентных приращений, таких как, например, 1.5 или 2.5?Я застрял?

Как сказано здесь: http://en.csharp -online.net / .NET_Type_Design_Guidelines% E2% 80% 94Enum_Design

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

Поскольку перечисление является набором констант, почемуя не могу иметь константы с плавающей точкой?

Обновление: здесь сказано: http://en.csharp -online.net / .NET_Type_Design_Guidelines% E2% 80% 94Enum_Design"Знаете ли вы, что CLR поддерживает перечисления с базовым типом floatили вдвое, даже если большинство языков не хотят выставлять это? "

Поскольку я использую только c #, есть ли способ сделать это с некоторыми хаки?

Ответы [ 3 ]

6 голосов
/ 04 декабря 2011

Да, вы застряли там. Вы не можете использовать enum s с типами с плавающей точкой. Вы можете использовать static class с константами, однако:

public static class MyFloatEnum {
    public const float One = 1.0;
    public const float OneAndAHalf = 1.5;
    // etc.
}

И в IntelliSense это будет выглядеть несколько близко. В качестве альтернативы вы можете просто использовать константы:

public const float A = 0.5;
public const float B = 17.62;
4 голосов
/ 04 декабря 2011

Хотя CLR сам поддерживает перечисления с плавающей запятой, разработчики C # решили не раскрывать это на языке (см. http://en.csharp -online.net / .NET_Type_Design_Guidelines% E2% 80% 94Enum_Design ). Вы можете использовать константы, как в ответе Джона Сондерса, или определить целочисленное перечисление с умноженными значениями, а затем разделить их обратно, если / когда вам нужно это значение.

Случай использования был бы определенно интересен. Зачем вам это нужно?

3 голосов
/ 04 декабря 2011

Вам нужно будет использовать набор констант:

public const float Percentage1 = 1.5;
public const float Percentage2 = 2.5;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...