|
2 / 2 / 1
Регистрация: 31.01.2016
Сообщений: 119
|
|
Псевдонимы(алиасы) в перечисления - правила использования17.02.2016, 20:58. Показов 7059. Ответов 16
Метки нет (Все метки)
Всем привет! Сейчас изучаю перечисления в c# и хотел спросить, почему в с# можно использовать псевдоним для любого целого типа данных
(byte, sbyte, short, ushort, int, uint, long, ulong) , но нельзя использовать любой системный целый тип данных C# (Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64) ? Когда я смотрел видео урок, то там был такой пример-объяснение: "Представте себе ситуацию в которой возможно, Вы захотите отказаться от Framework-ов предоставляемых Microsoft в языке c# и отключите импорт всех библиотек и в том числе импорт библиотеки System, и решите создавать свои типы. Вы ведь можете создавать свои типы? Конечно же да, но при этом у вас должны остаться простейшие типы данных. Так вот, простейшие типы даннных(даже при отключенной библиотеке System) у вас все же останутся, но в виде алиасов, а не в виде полноценной структуры (например byte) которая входит в пространство имен System. ". Почему при таком подробном описании ситуации я это все спрашиваю? Дело в том, что далее по уроку автор уделил теме алиасов еще некоторое время (а сам автор страдает забывчивостью сказать что то важное и иногда к сожалению обладает некоторой степенью недосказанности по некоторым вопросам) Вот в чем мой вопрос: Есть ли еще причины (помимо вышеприведенного примера) почему в перечислениях используют алиасы(псевдонимы)?
0
|
|
| 17.02.2016, 20:58 | |
|
Ответы с готовыми решениями:
16
Правила использования операций Правила использования ExtractFileFromCab
|
|
Администратор
|
||||||
| 18.02.2016, 01:29 | ||||||
Сообщение было отмечено BadCats как решение
Решение
BadCats, если я правильно понимаю тебя интересует почему можно написать
enum Smth : int { ... }, но нельзя написать enum Smth : Int32 { ... }. Если разрешить второй вариант, то можно будет написать такой код, который компилятору придется проверять.
2
|
||||||
|
|
|||||||||||
| 18.02.2016, 08:33 | |||||||||||
Сообщение было отмечено BadCats как решение
Решение
Жизнь они упростили только компилятору
Программисты же ломают головы, изыскивая в запрете Int32 и разрешении int тайный смысл.Это всё равно не наследование. Код с типами и их алиасами компилируется из
А якобы переносимость без стандартных типов будет какая-то теоретическая, сферическая и в вакууме. Вроде бы и можно её сделать, но никому нафиг не надо.
1
|
|||||||||||
|
2 / 2 / 1
Регистрация: 31.01.2016
Сообщений: 119
|
|
| 18.02.2016, 20:22 [ТС] | |
|
т.е, когда я использую алиасы в перечислениях, то теоретически работа компилятора будет идти быстрее т.к компилятору не придется проверять что Int32 это System.Int32 или я ошибаюсь?
0
|
|
|
2 / 2 / 1
Регистрация: 31.01.2016
Сообщений: 119
|
|
| 22.02.2016, 20:39 [ТС] | |
|
можно ссылку на источник?
0
|
|
|
|
|
| 22.02.2016, 20:51 | |
|
https://connect.microsoft.com/... stem-int64
https://connect.microsoft.com/... -type-name - эти ссылки уже не работают, за что спасибо MS. Может быть в архиве каком-нибудь найдёте. http://stackoverflow.com/quest... on-to-long https://social.msdn.microsoft.... rplanguage - здесь закончилось призывом модератора принять всё как есть и верить MS святоликому. Меня, впрочем, не убедило.
1
|
|
|
2 / 2 / 1
Регистрация: 31.01.2016
Сообщений: 119
|
|
| 22.02.2016, 20:54 [ТС] | |
|
простите не понял. Можно пожалуйста подробнее?
0
|
|
|
Master of Orion
|
|
| 22.02.2016, 21:53 | |
|
BadCats, int == Int32 == System.Int32. Сокращенные записи существуют только для программиста.
Добавлено через 28 минут BadCats, кстати var туда же. Компилятор и так и так выводит тип, поэтому если кто думает, что не используя var упрощает задачу компилятору - то он сильно ошибается. Или не использует юзинги - что с ними, что без них, скорость будет одна и та же. Причем для компилятора все типы характеризуются просто числом - уникальным идентификатором. Если точнее - адресом VTable в памяти И вот с этим числом работает компилятор. А все эти строки существуют только для работы с ними людей.
2
|
|
|
2 / 2 / 1
Регистрация: 31.01.2016
Сообщений: 119
|
|
| 23.02.2016, 13:11 [ТС] | |
|
нашел! на archive.org Это оно?
https://web.archive.org/web/20... stem-int64
0
|
|
|
|
||
| 23.02.2016, 13:47 | ||
|
Да, оно.
Как видите, "by design" и "won't fix". Добавлено через 12 минут
1
|
||
|
2 / 2 / 1
Регистрация: 31.01.2016
Сообщений: 119
|
|||||
| 07.03.2016, 16:40 [ТС] | |||||
все остальные кстати тоже могу высказываться ![]() мне необходимо узнать: есть ли крупица смысла(смысла про то, что в IL коде это все же разные типы) в этих цитатах-предположениях или это просто бред?
0
|
|||||
|
Master of Orion
|
|
| 07.03.2016, 18:10 | |
|
BadCats, ну почему, человека понять можно. Он говорит о том, что для программиста short и Int16 это один и тот же тип, но для рантайма это разные вещи. Из шарпа ты отличий никогда не увидишь, потому что на уровне языка это опять же одно и то же (примитивное typeof(short) == typeof(Int16) это подтвердит), а вот на нижележащих уровнях это разные вещи, потому что Int16 - это структура, в которую упаковывается "настоящее" число при боксинге, а при анбоксинге соответственно оно достается. Соответственно т.к. вызовы методов (по крайней мере через интерфейс) без боксинга невозможны, то и вызывать их можно только на "взрослой" структуре. Про случаи, когда можно использовать только число, но нельзя структуру немного не понял - слишком низкоуровневые вещи затронуты.
0
|
|
|
2 / 2 / 1
Регистрация: 31.01.2016
Сообщений: 119
|
|
| 07.03.2016, 21:35 [ТС] | |
|
Может я сейчас напишу ОЧЕНЬ БОЛЬШУЮ ГЛУПОСТЬ, но каким боком это к несовместимости (в версии C# младше 6.0) алиасов и "полноценных типов" в перичеслениях? Короче вопрос всей этой темы, приминительно к этим ответам на иностранном MSDN
0
|
|
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,569
|
|
| 04.06.2016, 23:43 | |
|
Судя по всему данное ограничение было убрано в C# 6.0: источник.
0
|
|
| 04.06.2016, 23:43 | |
|
Помогаю со студенческими работами здесь
17
Пределы без использования правила Лопиталя Какие правила использования динамических массивов? Правила использования строчных и блочных элементов Правила использования внешнего жесткого диска
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|