C# → Преобразование типов и модификаторы переменных

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

В C# есть оператор cheked() который можно использовать для проверки того, что операция не вызывает переполнения стека. С помощью этого оператора можно выяснить безопасно ли приведение типов, и заставить среду сгенерировать исключение переполнения если это не так:

Метод Parse() «грамматический разбор» поддерживают все предопределенные типы по значению, используется для конвертации в другие типы.

Упаковка (boxing) и распаковка позволяют преобразовывать типы по значению и типы по ссылке и наоборот.

string s = 10.ToString(); // не явная упаковка
int i = 20;
object o = i;   // явная упаковка
int j = (int)i; // распаковка

Модификатор new используется только в классах, которые являются производными от других классов, и скрывает существующее поле (новым) в этом классе.

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

Модификатор readonly делает переменную доступной только для чтения – после инициализации переменной изменить ее значение уже нельзя.