Войти

Показать полную графическую версию : перечисляемые строки


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

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

Admiral
05-10-2009, 01:24
Вместо 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
а список строковых констант в пространство имён можно в C# запихнуть? типа того:

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

MessageBox.Show(Errors.NoAuthCode);




© OSzone.net 2001-2012