2 / 2 / 0
Регистрация: 09.11.2014
Сообщений: 124
1

Преобразование типов

05.02.2016, 19:52. Показов 514. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Почему компилятор такое выражение допускает:
C#
1
2
byte b = 10;
b *= b;
А вот такое нет:
C#
1
2
byte b = 10;
b = b * b;
И требует сделать так:
C#
1
2
byte b = 10;
b = (byte)(b * b);
И есть ли разница между
C#
1
2
3
b = b * b;
//vs
b *= b;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.02.2016, 19:52
Ответы с готовыми решениями:

Преобразование типов
Подскажите как в c# с массивом int можно поработать как с массивом byte; Как в с++, например, int...

Преобразование типов
подскажите как преобразовать правильно значение стринг в булеан мой пример: namespace...

Преобразование типов
Код: using System; using System.Text; public class Program { public static void...

Преобразование типов
Всем привет. Переношу код из сишной реализации в проект на C#. Есть функция подсчета CRC, при ее...

2
Эксперт .NET
5521 / 4288 / 1214
Регистрация: 12.10.2013
Сообщений: 12,313
Записей в блоге: 2
05.02.2016, 21:06 2
Цитата Сообщение от Iron Brain Посмотреть сообщение
вот такое нет:
VS2015 у меня и такое не допускает.
Цитата Сообщение от Iron Brain Посмотреть сообщение
требует сделать так:
Поскольку арифметические операции определены для типов не ниже Int32, то все более низшие типы неявно приводятся к нему, а потом производятся операции. Естественно, чтобы преобразовать результат (типа Int32) к типу Byte, требуется явное приведение типов.
Цитата Сообщение от Iron Brain Посмотреть сообщение
есть ли разница между
Никакой разницы нет.
1
Администратор
Эксперт .NET
16860 / 13248 / 5181
Регистрация: 17.03.2014
Сообщений: 27,075
Записей в блоге: 1
05.02.2016, 21:54 3
Iron Brain, потому что согласно спецификации C# операция *= трактуется как (byte)(b * b) поэтому компилятор и не требует выполнять явное преобразование.
§7.17.2 Compound assignment

An operation of the form x op= y is processed by applying binary operator overload resolution (§7.3.4) as if the operation was written x op y. Then,
  • If the return type of the selected operator is implicitly convertible to the type of x, the operation is evaluated as x = x op y, except that x is evaluated only once.
  • Otherwise, if the selected operator is a predefined operator, if the return type of the selected operator is explicitly convertible to the type of x, and if y is implicitly convertible to the type of x or the operator is a shift operator, then the operation is evaluated as x = (T)(x op y), where T is the type of x, except that x is evaluated only once.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.02.2016, 21:54
Помогаю со студенческими работами здесь

Преобразование типов в T
Доброго времени суток всем. Есть у меня List с заранее неизвестным типом <T> Так же есть строка...

Преобразование типов
Что-то совсем в тупик зашла.Как здесь явно преобразовать? public SortedDictionary<char, double>...

Преобразование типов
Я унаследовал стандартный класс Socket в своем классе ASock. Вопрос о приведение типа Socket к...

Преобразование типов
нужна помощь с преобразованием типа. Из текстового поля в которое предполагается введение 13...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru