2010-03-03 3 views
1

я должен создать перечисление, который содержит значения, имеющие пробелыКак давать значения перечислений, которые оказывают пространство

public enum MyEnum 
     { 
      My cart, 
      Selected items, 
      Bill    
     } 

Это дает ошибку. Использование конкатенированных слов, таких как MyCart или использование подчеркивания My_Cart, не является вариантом. Пожалуйста, направляйте.

Заранее спасибо.

+0

Возможный дубликат - http://stackoverflow.com/questions/1187085/string-to-enum- convert-in-c – ChrisF

+1

Фактически см. этот ответ - http: // stackoverflow.com/questions/1187085/string-to-enum-conversion-in-c/1187098 # 1187098 - к вышеуказанному вопросу – ChrisF

+0

@ChrisF спасибо за ссылку ...... он решает мою проблему ... – HotTester

ответ

4

От enum (C# Reference)

Перечислитель не может содержать белый пространство в его названии.

+0

есть ли какое-нибудь обход? – HotTester

+0

Замечания были отправлены на ваш вопрос относительно отображения перечисления без подчеркивания, если вы того пожелаете. –

+0

@HotTester Вы можете использовать 'DisplayAttribute' - см. Мой чудесный ответ на вопрос https://stackoverflow.com/questions/1101872/how-to-set-space-on-enum/31988435#31988435 –

2

Enum просто не может иметь место! Для чего это необходимо? Если вам это нужно просто для показа, вы можете придерживаться подчеркивания и написать метод расширения для вашего перечисления, чтобы вы могли запросить текст отображения, выполнив это (если ваш метод ext - это вызов DisplayText). Внутренне вы просто реализовать метод DisplayText заменить «_» с пространством

MyEnum.My_Cart.DisplayText(); // which return "My Cart" 
1

В соответствии C# спецификации, «Перечислитель не может содержать пробелы в его названии.» (см. http://msdn.microsoft.com/en-us/library/sbbt4032.aspx) Зачем вам это нужно?

+1

перечисление не является перечислителем ... – leppie

+0

Я не писал сообщение, MS сделал, и я предполагаю, что они сделали опечатку! =) (текст, который я цитировал, из статьи MS, на которую я предоставил ссылку) – Will

+0

Весьма интересная ссылка msdn говорит enum как перечислитель! Ошибка msdn? – HotTester

-2

Я согласен с использованием DisplayText, если вы следуете конвенции. Но если вам нужно другое отображаемое значение для представления константы enum, тогда вы можете передать конструктору это значение.

перечисление MyEnum общественного { Моя корзина ("корзина"), Выбранные элементы ("Все выбранные элементы"), Билл ("Оплата");

private String displayValue; 
private MyEnum(String displayValue) { 

это.displayValue = displayValue; }
public String displayText() { return this.displayValue; }

}

Вы можете иметь метод DisplayText или метод ToString, который будет возвращать displayValue

+0

Это не компиляция - Enum - это просто список значений, он не может содержать членов, конструкторов и т. Д. Самое большее, что вы можете сделать, это назначить определенное целочисленное значение константе, но даже тогда вы не можете использовать пробелы в константе имена. –

1

**

перечислений не может иметь места в C#!»Вы говорите, Вот путь System.ComponentModel.DescriptionAttribute, чтобы добавить более дружественное описание к значениям перечисления. **

public enum DispatchTypes 
    { 
     Inspection = 1, 
     LocalSale = 2,[Description("Local Sale")] 
     ReProcessing=3,[Description("Re-Processing")] 
     Shipment=4, 
     Transfer=5 
    } 

Следовательно, она возвращает "LocalSale" или "Репроцессинг", когда мы используем .ToString()

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