-1 / 0 / 0
Регистрация: 05.02.2011
Сообщений: 26
1

неявное преобразование перечислимых типов в С#

14.03.2011, 17:01. Показов 5017. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Возможно только единственное неявное преобразование перечислимых типов — десятичное (имеется ввиду система исчисления, а не десятичный тип decimal ) целочисленное (sbyte, byte,short, ushort, int, uint, long, ulong) литеральное значение 0 может быть преобразо-вано в любой тип enum.

Красиво написано, как же это реализовать ???

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System;
 
//базовый тип int по умолчанию, все константы имеют значение 0 
//как и написано в определении
public enum IntEne {One,Two=0,Three=0};
 
//явно заданный тип long 
public enum LongEne : long {one,two,three};
 
class Program {
public static int Main() {
 
//попытка неявно преобразовать, компилятор сообщает об ошибке
IntEne.One=LongEne.two;
 
Console.ReadKey();
return 0;
}
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.03.2011, 17:01
Ответы с готовыми решениями:

Неявное преобразование типов
Здравствуйте, помогите, пожалуйста, разобраться с такой вещью. Есть задание - Определить класс...

Неявное преобразование типов
В данном коде неявное преобразование из int в string? string res = ""; ...

Неявное преобразование типов в C#
Почему данная программа верна и нет ошибок, ведь тип long больше типа float. Как так можно 8 байт...

Быстрое преобразование Фурье и ошибка "Неявное преобразование типа"
А подскажите еще по одной прблемке: Есть программа реализующая БПФ (ну должна по крайней мере это...

14
194 / 193 / 17
Регистрация: 07.11.2010
Сообщений: 477
14.03.2011, 17:55 2
поменяй местами как здесь
C#
1
LongEne.two = IntEne.One;// неявное преобразование int в long возможно
Неявное преобразование возможно только в порядке возрастания
sbyte -> byte -> short -> ushort -> int -> uint -> long -> ulong
0
-1 / 0 / 0
Регистрация: 05.02.2011
Сообщений: 26
14.03.2011, 22:29  [ТС] 3
Уважаемый Leax !!!
Огромное Вам спасибо, что отвлеклись от Ваших важных дел, и написали мне, представителю колхозной молодежи, желающему познать немного C#.
Так вот, многоуважаемый Leax, я не хочу бросить тень на Ваши знания в С# и не смею Вам давать советы, но будьте добры в начале протестируйте (скопируйте мой код, вставьте Ваш, скомпилируйте и посмотрите в окошко ошибок, не написал ли компилиятор о своем не согласии с Вами), а лишь потом присылайте Ваш код полностью.

Теперь по существу, я протестировал в VS 2008 и VS 2010. Резултьтат один и тотже, ошибка (Левая часть выражения присваивания должна быть переменной, свойством или индексатором)
И главное, вопрос ведь заключался в том, что неявное преобразование возможно только в единственном случае для перечисляемы типов, когда десятичное (имеется ввиду система исчисления) целочисленное литеральное значение 0 может быть преобразованно в любой из типов enum. Это дословно, что я прочитал в одной литературе, пытаюсь разобраться и протестировать.
0
194 / 193 / 17
Регистрация: 07.11.2010
Сообщений: 477
14.03.2011, 23:09 4
Уважаемый sergey19731212, в следующий раз просите каждого, чтобы он полностью внимательно изучил все Ваши вопросы со всех сторон, 10 раз перепроверил у себя на компе, а только потом отвечал Вам скромно и кратко. Постараюсь больше Вам не мешать своими глупыми советами
0
-1 / 0 / 0
Регистрация: 05.02.2011
Сообщений: 26
14.03.2011, 23:23  [ТС] 5
Уважаемый Leax! Я не хотел Вас огорчить, но если Вас не затруднит, проверьте Ваш вариант, и напишите код полностью, а я его скопирую и протестирую у себя.

Добавлено через 9 минут
Уважаемый Leax! Еще такой вопрос, как можно что то советовать, не проверив или не зная хотя бы на 99% ??? Вы же программист, у Вас должно быть мышление не как у женщины пенсионного возраста, тогрующей семечками "Что, мало, ну ладно, давай досыплю!" а как инструкции к телфону "введтите * потом 101 потом # потом кнопку вызова, получите остаток денег на счету"
0
194 / 193 / 17
Регистрация: 07.11.2010
Сообщений: 477
14.03.2011, 23:31 6
Уважаемый sergey19731212, я согласен что своим постом #2 я некорректно осветил глубину Вашего вопроса. Можно ли получить ссылку на первоисточник данной информации, а также узнать практическое применение решения данного вопроса? Хотя, честно говоря, после общения с Вами продолжать диалог нет особого желания
0
122 / 122 / 16
Регистрация: 18.09.2010
Сообщений: 212
14.03.2011, 23:39 7
Цитата Сообщение от sergey19731212 Посмотреть сообщение
//попытка неявно преобразовать, компилятор сообщает об ошибке IntEne.One=LongEne.two;
А ничего, что это не попытка преобразовать, а попытка присвоить значение константе?.. Все равно что пытаться выполнить
C#
1
100500=IntEne.One;
0
194 / 193 / 17
Регистрация: 07.11.2010
Сообщений: 477
14.03.2011, 23:50 8
sergey19731212,
Вот Ваше неявное преобразование литерала 0 в перечисляемый тип (если я конечно же снова Вас не подвёл)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
using System;
 
public  enum IntEne { One, Two, Three};
 
class Program
{
    public static int Main()
    {
        IntEne example = 0; // неявное преобразование литерала 0
 
        Console.ReadKey();
        return 0;
    }
}
0
-1 / 0 / 0
Регистрация: 05.02.2011
Сообщений: 26
14.03.2011, 23:59  [ТС] 9
В одной книге "Специальное издание Использование С#" рассматривается вопрос о преобразовании типов. Я сейчас разбираю эту тему. Выглядит это так:

Неявное преобразование
преобразование числовых типов
преобразование перечислимых типов
преобразование константных выражений
преобразование типов ссылок
упаковка

Явное преобразование
преобразование числовых типов
преобразование перечислимых типов
преобразование типов ссылок
преобразование типов в выражениях
checked
unchecked

Пользовательские преобразования

Каждый из этих пунктов я пытаюсь протестировать. Если комуто интересно, пришлите e-mail, я вышлю файл.
Дальше, в этой книге вскольз упомянуто о неявном преобразовании, заметьте неявном преобразовании перечислимых типов.
Теперь дословно:

Возможно только единственное неявное преобразование перечислимых типов - десятичное (система счисления) целочисленное летеральное значение 0 может быть преобразованно в любой из типов enum. Термин литерал обозначает константу. Например 10, 3, 4 и т.д. можно назвать и литералами и константами.

Вот из этой информации я и попытался что-то сделать.
0
122 / 122 / 16
Регистрация: 18.09.2010
Сообщений: 212
15.03.2011, 00:04 10
Цитата Сообщение от sergey19731212 Посмотреть сообщение
Возможно только единственное неявное преобразование перечислимых типов - десятичное (система счисления) целочисленное летеральное значение 0 может быть преобразованно в любой из типов enum. Термин литерал обозначает константу. Например 10, 3, 4 и т.д. можно назвать и литералами и константами.
Так в предыдущем примере это вам и проиллюстрировали.. Имеется ввиду, что только 0 может быть неявно преобразован в любой из типов enum..
0
194 / 193 / 17
Регистрация: 07.11.2010
Сообщений: 477
15.03.2011, 00:05 11
вот я в #8 и ответил в примере
0
-1 / 0 / 0
Регистрация: 05.02.2011
Сообщений: 26
15.03.2011, 00:13  [ТС] 12
Уважаемый BrumbleHorse, я не давно пытаюсь изучать C#
Я почему то думал, что это обычное присвоение значения.
Вы давно знаете С# ???
0
122 / 122 / 16
Регистрация: 18.09.2010
Сообщений: 212
15.03.2011, 00:18 13
Что значит "знать C#"?.. Программирую на нем чуть более года..
0
-1 / 0 / 0
Регистрация: 05.02.2011
Сообщений: 26
15.03.2011, 17:09  [ТС] 14
 Комментарий модератора 
sergey19731212, правила п 2.12


Добавлено через 14 часов 34 минуты
Уважаемый Leax !
Я был не прав по отношению к Вам, слишком пафосно и дерзко я написал Вам в сообщении. Не только в картах бывает перебор.
0
194 / 193 / 17
Регистрация: 07.11.2010
Сообщений: 477
15.03.2011, 17:12 15
sergey19731212, ок, проехали
Зачем повторяться, или нужно публичное прощение?
0
15.03.2011, 17:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.03.2011, 17:12
Помогаю со студенческими работами здесь

Неявное преобразование
Расскажите как в компьютере происходит неявное преобразование кто делает это преобразование для...

Неявное преобразование в object
На сайте МС написано: А вот ругается студия: Если явно преобразовать (object)someIntValue ...

Неявное преобразование к int
Есть класс с полем типа object. При присваивании происходит неявное преобразование к int`у, можно...

Интерфейсы - ошибка: неявное преобразование
Здравствуйте, уважаемые. Прошу мне разъяснить нижеуказанную ситуацию, желательно на пальцах. ...


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

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

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