- •Основы c#. Урок 1. Что такое c#?
- •Основы c#. Урок 2. Что такое net Runtime?
- •Основы c#. Урок 3. Первая программа на c#
- •Основы c#. Урок 4. Переменные языка c#
- •Основы c#. Урок 5. Логические операторы
- •Основы c#. Урок 6. Массивы в c#
- •Основы c#. Урок 7. Операторы if и switch
- •Основы c#. Урок 8. Циклы for и foreach
- •Основы c#. Урок 10. Классы в c#
- •Основы c#. Урок 9. Цикл while
- •Основы c#. Урок 11. Конструкторы классов
- •Основы c#. Урок 12. Наследование
- •Основы c#. Урок 13. Запись в экземпляр базового класса экземпляра производного
- •Основы c#. Урок 14. Вложенные классы
- •Основы c#. Урок 15. Перегрузка бинарных операторов
- •Основы c#. Урок 16. Перегрузка унарных операторов
- •Основы c#. Урок 17. Область видимости
- •Основы c#. Урок 18. Виртуальные функции
- •Основы c#. Урок 19. Абстрактные классы
- •Основы c#. Урок 20. Запрещение наследования или модификатор sealed
- •Основы c#. Урок 21. Статические переменные
- •Основы c#. Урок 22. Статические методы класса
- •Основы c#. Урок 23. Статические конструкторы
- •Основы c#. Урок 24. Закрытые конструкторы или классы без экземпляров
- •Основы c#. Урок 25. Передача параметров переменой длины
- •Основы c#. Урок 26. Строки (класс System.String)
- •Основы c#. Урок 27. Строки (класс StringBuilder)
- •Основы c#. Урок 28. Передача параметров по ссылке и по значению (ref и out)
- •Основы c#. Урок 29. Пример передачи по ссылке
- •Основы c#. Урок 30. Перегрузка
- •Основы c#. Урок 31. Функции класса System.Array
- •Основы c#. Урок 32. Делегаты
- •Основы c#. Урок 33. События
- •Основы c#. Урок 34. Пример класса с событием
- •Основы c#. Урок 35. Введение в атрибуты
- •Основы c#. Урок 36. Пример пользовательского атрибута
- •Основы c#. Урок 37. Параметры командной строки
- •Основы c#. Урок 38. Метод Main в отдельном классе
- •Основы c#. Урок 39. Форматированный вывод
- •Основы c#. Урок 40. Класс System.Object
- •Основы c#. Урок 41. Методы класса System.Object
- •Основы c#. Урок 42. Переопределяем методы класса System.Object
- •Основы c#. Урок 43. Константы
- •Основы c#. Урок 44. Модификаторы доступа
- •Основы c#. Урок 45. Ссылка на текущий экземпляр класса (this)
- •Основы c#. Урок 46. Класс Environment
- •Основы c#. Урок 47. Работаем со специальными папками
- •Основы c#. Урок 48. Получаем список всех дисков
- •Основы c#. Урок 49. Ввод/вывод в c# (System.Io)
- •Основы c#. Урок 50. Классы для работы с папками и файлами
- •Основы c#. Урок 51. Класс Directory
- •Основы c#. Урок 52. Класс File
- •Основы c#. Урок 53. Класс FileSystemInfo
- •Основы c#. Урок 54. Класс DirectoryInfo
- •Основы c#. Урок 55. Перечисление FileAttributes
- •Основы c#. Урок 56. Класс FileInfo
- •Основы c#. Урок 57. Пример: получение имен всех подпапок
- •Основы c#. Урок 58. Класс Path
- •Основы c#. Урок 59. Класс FileSystemWatcher
- •Основы c#. Урок 60. Перечисление NotifyFilters
- •Основы c#. Урок 61. Перечисление WatcherChangeTypes
- •Основы c#. Урок 62. Класс FileSystemWatcher - пример использования
- •Основы c#. Урок 63. Сериализация класса
- •Основы c#. Урок 64. Класс BitArray
- •Основы c#. Урок 65. Класс Stack
- •Основы c#. Урок 66. Класс SortedList
- •Основы c#. Урок 67. Конвертация типов через класс Convert
- •Основы c#. Урок 68. Работа с перечислениями (enum)
- •Основы c#. Урок 69. Использование атрибута Flags для перечисления
- •Основы c#. Урок 70. Использование атрибута Flags для перечисления 2
- •Основы c#. Урок 71. Nullable типы
- •Основы c#. Урок 72. Reflection - динамическое создание кода
- •Основы c#. Урок 73. Reflection - создание enum'ов
Основы c#. Урок 67. Конвертация типов через класс Convert
Класс Convert служит для конвертиции различных типов друг в друга. Вот так, например, можно сконвертировать строковое представление числа или булевского значения в само число или булевское значение:
string s = "1234";
int a = Convert.ToInt32(s);
bool b = Convert.ToBoolean("true");
В переменные a и b запишутся число 1234 и значение true соответственно.
Это был довольно-таки тривиальный пример. Но часто форматирование некоторого объекта зависит от региональных настроек. Например, в США в датах пишут сначала месяц, а потом число, а в России - наоборот. В этом случае мы используем метод ChangeType класса Convert, который принимает в качестве одного из параметров форматтер для конкретного региона (культуры). Вот пример:
IFormatProvider formatRu = new System.Globalization.CultureInfo("ru-RU", true);
IFormatProvider formatUS = new System.Globalization.CultureInfo("en-US", true);
DateTime f = (DateTime)Convert.ChangeType("11/12/2007", typeof(DateTime), formatRu);
f = (DateTime)Convert.ChangeType("11/12/2007", typeof(DateTime), formatUS);
После первого вызова в переменную f запишется 11 декабря, а после второго - 12 ноября.
Основы c#. Урок 68. Работа с перечислениями (enum)
Перечисления (enum) - это определенный программистом тип, который может принимать только ограниченный набор значений. Типичный пример - это дни недели (их всего семь). Или, например, типы доступа с чему-либо (полный доступ, доступ только на чтение и отсутствие доступа).
Вот примеры определения перечисления:
public enum MyColors : byte
{
Red,
Yellow,
Green
}
public enum Values
{
Seven = 7,
Eight = 8,
Ten = 10
}
В первом вы видите необязательную часть - это указание типа, на котором основано перечисление (byte в нашем случае). Во втором тоже есть необязательная часть - это числовые величины для значений перечисления.
А вот пример использования первого перечисления:
// Использлование enum.
MyColors color = MyColors.Green;
// Получение строки из значения enum'а.
Console.WriteLine(color.ToString());
// Получение значения enum'а из строки.
MyColors mycolor = (MyColors)Enum.Parse(typeof(MyColors), "Red");
// Получение всех строковых значений enum'а.
string[] s = Enum.GetNames(typeof(MyColors));
// Получение всех значений enum'а.
Array ar = Enum.GetValues(typeof(MyColors));
MyColors col = (MyColors)ar.GetValue(1);
// Получение типа, на котором основан enum.
Type type = Enum.GetUnderlyingType(typeof(MyColors));
Как вы видите, вы пожете не только работать с переменными, имеющими тип вашего перечисления, но и получаеть информацию о самом типе (например, получить все значения перечисляемого типа (в том числе сразу в виде строкового массива) или получить тип, на котором перечисление основано (byte в нашем случае)).
Основы c#. Урок 69. Использование атрибута Flags для перечисления
Перед перечислением можно поставить атрибут Flags. Это означает, что мы сможем работать с таким перечислением как с набором битов. В частности, мы сможем использовать битовые операции.
Вот пример такого использования:
[Flags()]
public enum MilitaryType{
Marine = 1,
Land = 2,
Cosmic = 4,
MarineAndLand = Marine | Land,
AllType = Marine | Land | Cosmic
}
class Program
{
static void Main(string[] args)
{
MilitaryType type0 = MilitaryType.Land | MilitaryType.Cosmic;
Console.WriteLine(type0); //Выведется "Land, Cosmic"
Object o = Enum.Parse(typeof(MilitaryType), "Marine, Cosmic");
MilitaryType type1 = (MilitaryType)o;
}
}
Как вы видите, мы записали в переменную type0 результат побитовой операции двух переменных перечисляемого типа MilitaryType. В следующей строке мы выводим на консоль результат. На экран выведется "Land, Cosmic" (как следствие применения к MilitaryType атрибута Flags.
Обратное преоразование тоже действует. Так, мы с помощью метода Parse записываем в наше перечисление типа MilitaryType преобразованную строку "Marine, Cosmic". В результате этого в type1 окажется значение MilitaryType.Marine | MilitaryType.Cosmic.
Также обратите внимание, что для записи простых (т. е. не являющихся комбинацией других) значений в перечисление с атрибутом Flags надо использовать для их величин степени двойки.
