При преобразовании типов, необходимо следить за диапазоном значений.
В C# есть оператор cheked() который можно использовать для проверки того, что операция не вызывает переполнения стека. С помощью этого оператора можно выяснить безопасно ли приведение типов, и заставить среду сгенерировать исключение переполнения если это не так:
Метод Parse() «грамматический разбор» поддерживают все предопределенные типы по значению, используется для конвертации в другие типы.
Упаковка (boxing) и распаковка позволяют преобразовывать типы по значению и типы по ссылке и наоборот.
string s = 10.ToString(); // не явная упаковка int i = 20; object o = i; // явная упаковка int j = (int)i; // распаковка
Модификатор new используется только в классах, которые являются производными от других классов, и скрывает существующее поле (новым) в этом классе.
По умолчанию поля являются полями экземпляра класса – для каждого экземпляра создается отдельная копия переменной. Однако, если добавить к объявлению переменной ключевое слово static, поле будет статическим, т.е. будет существовать одна копия этого поля, не зависимо от количества создаваемых экземпляров класса, доступ к статической переменной класса будет осуществляться через имя класса, а не через экземпляр класса.
Модификатор readonly делает переменную доступной только для чтения – после инициализации переменной изменить ее значение уже нельзя.