![]() |
Приведение типов аргументов в C#Одна из важных особенностей определений методов в C# - это приведение типов аргументов. Под приведением здесь подразумевается преобразование аргумента в другой тип. Часто имеет место неявное преобразование: копия значения переменной преобразуется в другой тип без явного приведения. А вот явное преобразование имеет место тогда, когда на это указывает явное приведение. Эти преобразования проводятся с помощью класса Convert из пространства имен System. В C# есть два вида преобразований:
Таблица 1: Типы данных в C#
Таблица 2: Допустимые неявные преобразования
К примеру, программист может вызвать метод Cos класса Math с целым аргументом, несмотря на то, что требуется аргумент double. Оператор Console.WriteLine(Math.Cos(3)); корректно оценит Math.Cos(3) и выведет результат. Здесь идет неявное преобразование int 3 в double 3.0 до того, как значение получает Math.Cos. Это один из примеров, когда C# неявно преобразовывает значения аргументов, которые точно не соответствуют типу параметра в определениях методов. Иногда преобразования такого типа могут вызвать ошибку компиляции: когда идет нарушение правил при определении расширяющегося преобразования. В предыдущем примере C# с помощью Math.Cos преобразует int в double без непосредственного изменения аргумента, а вот обратное преобразование уберет мантиссу (дробную часть) у double. Если преобразовывать большие целые типы в меньшие (long в int), то в итоге могут получаться уже измененные значения. Эти сужающиеся преобразования могут приводить к потере данных, поэтому C# не позволяет их применять без явного приведения. Правила преобразования C# применяют к выражениям смешанного типа (в которых содержатся значения двух или более типов данных) и к значениям примитивного типа данных, которые передаются в методы в качестве аргументов. C# изменяет типа значения в выражение смешанного типа до «самого высокого». Стоит отметить, что оригинал значения не меняется – создается специальная копия, которая и используется. Таблицу 2 можно применять для определения самого высокого типа в выражении. Для типа в левом столбце правые – высшие. К примеру, типы decimal, double, float, int, long, object выше, чем тип short. ![]() Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда. ![]() |
Мои услуги
|
© upread.ru 2013-2022 При перепечатке активная ссылка на сайт обязательна. |