Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   перечисляемые строки (http://forum.oszone.net/showthread.php?t=152317)

Surround 04-10-2009 20:07 1234446

перечисляемые строки
 
Хочу сделать тип данных перечисление, содержащий сообщения об ошибках в программе, чтобы, например, в MessageBox'е не писать целиком каждый раз текст, а делать обращение вида "ErrorCodes.NoAuthFile", вместо которого уже подставлялся бы текст. Но беда в том, что тип Enum поддерживает только числовые значения элементов перечисления. Как сделать то же самое, но со строками?

Drongo 04-10-2009 21:49 1234502

Surround, Может быть создать символьный массив указателей, где каждому указателю будет присвоена строка текста. А дальше использовать оператор switch, вроде в C# есть такой оператор? А какой язык программирования? И если допустим, код ошибки вернуть, return 4, то через сравнение case вернуть текст соответствующий 4 индексу массива, ErrorText[4]. Вариант?

Admiral 05-10-2009 01:24 1234654

Вместо switch можно использовать тоже перечисление в качества номера элемента в массиве строк.
Код:

enum Errors {NoAuthFile, NoFile, FileCorrupted};
//...
string[] ErrorText = {"No Auth File", "No File", "File is corrupted" };
//...
MessageBox.Show(ErrorText[(int)Errors.NoAuthFile]);
MessageBox.Show(ErrorText[(int)Errors.NoFile]);
MessageBox.Show(ErrorText[(int)Errors.FileCorrupted]);

Drongo, указатели в С# используют в крайних случаях (manage(управляемая) политика .NET Framework), в конструкциях unsafe. Их применение даёт возможность повысить быстродействие программы.

pva 05-10-2009 19:57 1235135

а список строковых констант в пространство имён можно в C# запихнуть? типа того:
Код:

// допустим, что это синтаксически правильная конструкция на С#
class Errors
{
  string
    NoAuthCode = "No Auth Code",
    NoFile = "No File",
    FileCorrupted = "File Corrupted"
  ...;
};

MessageBox.Show(Errors.NoAuthCode);



Время: 22:37.

Время: 22:37.
© OSzone.net 2001-