Основы языка C# 2005. Евсеева О.Н - 38 стр.

UptoLike

Составители: 

42
Рисунок 11. Вывод на печать результатов теста WhoTest
Где, как и когда выполняются преобразования типов?
Необходимость в преобразовании типов возникает в выражениях,
присваиваниях, замене формальных аргументов метода фактическими.
Если при вычислении выражения операнды операции имеют разные
типы, то возникает необходимость приведения их к одному типу. Такая
необходимость возникает и тогда, когда операнды имеют один тип, но он
несогласован с типом операции. Например, при выполнении сложения
операнды типа byte должны быть приведены к типу int, поскольку сложение не
определено над байтами. При выполнении присваивания x=e тип источника e и
тип цели x должны быть согласованы. Аналогично, при вызове метода также
должны быть согласованы типы источника и целифактического и
формального аргументов.
Преобразования ссылочных типов
Поскольку операции над ссылочными типами не определены
(исключением являются строки, но операции над ними, в том числе и
присваивание, выполняются как над значимыми типами), то необходимость в
них возникает только при присваиваниях и вызовах методов.
Преобразования типов в выражениях
В C# такие преобразования делятся на неявные и явные. К неявным
относятся те преобразования, результат выполнения которых всегда успешен и
не приводит к потере точности данных. Неявные преобразования выполняются
автоматически. Для арифметических данных это означает, что в неявных
преобразованиях диапазон типа назначения содержит в себе диапазон
исходного типа. Например, преобразование из типа byte в тип int относится к
неявным, поскольку диапазон типа byte является подмножеством диапазона int.
Это преобразование всегда успешно и не может приводить к потере точности.
К явным относятся разрешенные преобразования, успех выполнения
которых не гарантируется или может приводить к потере точности. Такие
потенциально опасные преобразования должны быть явно заданы
программистом. Преобразование из типа int в тип byte относится к явным,