Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
109 / 52 / 16
Регистрация: 09.06.2021
Сообщений: 480

Зачем вообще нужно приведение переменной enum?

29.08.2021, 13:31. Показов 403. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне еще непонятно, зачем вообще нужно приведение переменной enum? Если стоит такая переменная в вызове члена массива, ясно и так, что должно быть приведение. Чего компилятор это не пишет? Или это для предупреждения об ошибке программиста, который может не то написать? Тогда можно было бы где-то поставить какой-нибудь значок, чтобы при его выборе приведение enum совершалось компилятором автоматически.

Добавлено через 2 минуты
Цитата Сообщение от kernel_mode Посмотреть сообщение
в этом нет необходимости
Необходимости нет, а польза могла бы быть: я написал в первом сообщении, когда такой синтаксис был бы полезен.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.08.2021, 13:31
Ответы с готовыми решениями:

Зачем в ООП нужно приведение типов?
Доброго дня всем, меня интересует и вопрос, для чего нужно приведение типов, если я могу сразу создать класс нужного мне типа ? ну вот...

Зачем нужно вообще Моделирование в целом?
Здравствуйте всем! хотел бы поинтересоваться зачем нужна вообще Моделирование? я знаю что по этому предмету много чего написана типа...

Что означает слово e.prototype, зачем оно вообще нужно?
Я знаю, что вот так вот объявляется функция function showMessage() { alert( 'Всем привет!' ); } А что вот это такое? ...

16
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
29.08.2021, 13:39
Цитата Сообщение от Fylhtq05 Посмотреть сообщение
зачем вообще нужно приведение переменной enum?
Для ясности.

Цитата Сообщение от Fylhtq05 Посмотреть сообщение
Если стоит такая переменная в вызове члена массива, ясно и так, что должно быть приведение.
Это вам ясно, как автору задумки.
А кому-нибудь может быть и не ясно, а может вообще быть написано по ошибке.

Цитата Сообщение от Fylhtq05 Посмотреть сообщение
Чего компилятор это не пишет?
Правила языка запрещают ему это дописывать.
Один из принципов C# — не пытаться угадать что имел в виду программист, а требовать ясно излагать свои мысли.
Если вам нужен язык, где компилятор/интерпретатор будет додумывать за вас, то существует JavaScript. В обоих подходах есть свои плюсы и минусы — выбирайте тот инструмент, который лучше решает вашу задачу.
1
109 / 52 / 16
Регистрация: 09.06.2021
Сообщений: 480
29.08.2021, 13:43  [ТС]
Цитата Сообщение от kolorotur Посмотреть сообщение
Правила языка запрещают ему это дописывать.
Текущие правила последней версии языка. Язык совершенствуется и чего бы в новой версии...
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
29.08.2021, 14:44
Цитата Сообщение от Fylhtq05 Посмотреть сообщение
Текущие правила последней версии языка.
Они, ага.

Цитата Сообщение от Fylhtq05 Посмотреть сообщение
Язык совершенствуется и чего бы в новой версии...
Дык не вопрос — язык открыт, предложите новый функционал, а еще лучше — сразу реализуйте и подайте PR.
1
109 / 52 / 16
Регистрация: 09.06.2021
Сообщений: 480
29.08.2021, 15:22  [ТС]
Цитата Сообщение от kolorotur Посмотреть сообщение
предложите новый функционал
Это не для меня. Мне бы с основами языка разобраться. Вопрос задавал, чтобы узнать возможные проблемы. Может были бы какие-нибудь проблемы с использованием такой dll? А то я бы задал еще вопрос почему нельзя статик объявить в методе, если такое поле используется только этим методом. А компилятор переносил бы это в класс, как переносит локальные методы. Членов класса стало бы меньше и значит меньше бы надо было делить класс в свою очередь на классы.
0
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
29.08.2021, 15:31
Цитата Сообщение от Fylhtq05 Посмотреть сообщение
А то я бы задал еще вопрос почему нельзя статик объявить в методе, если такое поле используется только этим методом.
а вы задайте! а то дискриминируете вопрос по принципу "вам лично что-то там понятно, значит всё хорошо"
Вон в c++ можно статик в методе объявлять.
1
109 / 52 / 16
Регистрация: 09.06.2021
Сообщений: 480
29.08.2021, 15:47  [ТС]
Цитата Сообщение от КОП Посмотреть сообщение
дискриминируете вопрос по принципу "вам лично что-то там понятно, значит всё хорошо"
Ничего не понял. Когда не понимаю это плохо. А по вашему это хорошо? А когда понимаю, вы правы, это хорошо. А что, наоборот?
Цитата Сообщение от КОП Посмотреть сообщение
Вон в c++ можно статик в методе объявлять.
Если коротко, то можно было бы и здесь ответить, чтобы ветку не захламлять моими дилетантскими рассуждениями.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
29.08.2021, 16:26
Цитата Сообщение от Fylhtq05 Посмотреть сообщение
почему нельзя статик объявить в методе
Потому что C# — ООП-язык, состояние является частью объекта или типа, а не метода.
Если переменная должна сохранять значение между вызовами, то это признак того, что метод находится не там где нужно и должен быть отрефакторен в отдельный тип с состоянием.

Цитата Сообщение от Fylhtq05 Посмотреть сообщение
Членов класса стало бы меньше и значит меньше бы надо было делить класс в свою очередь на классы.
Аргумент так себе.
Инкапсуляция — это хорошо.
0
109 / 52 / 16
Регистрация: 09.06.2021
Сообщений: 480
29.08.2021, 17:08  [ТС]
1.
Цитата Сообщение от kolorotur Посмотреть сообщение
Потому что C# — ООП-язык, состояние является частью объекта или типа, а не метода.
Ну так я же написал,
Цитата Сообщение от Fylhtq05 Посмотреть сообщение
А компилятор переносил бы это в класс
2.Перед вами КОП написал, что в С++ это есть.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
29.08.2021, 17:52
Цитата Сообщение от Fylhtq05 Посмотреть сообщение
А компилятор переносил бы это в класс
Код люди читают — нацелено на них, а не на компилятор.

Цитата Сообщение от Fylhtq05 Посмотреть сообщение
Перед вами КОП написал, что в С++ это есть.
C++ — не "чистый" ООП язык, потому может позволять себе всякое разное.
1
109 / 52 / 16
Регистрация: 09.06.2021
Сообщений: 480
29.08.2021, 18:06  [ТС]
Цитата Сообщение от kolorotur Посмотреть сообщение
Код люди читают — нацелено на них
Читаю. Прочтут, что статик объявлен в методе. Когнитивный диссонанс случится?
Цитата Сообщение от kolorotur Посмотреть сообщение
C++ — не "чистый" ООП язык, потому может позволять себе всякое разное.
Почему локальные методы компилятор может переносить в класс, несмотря на ООП и то, что люди читают, а статическое поле нет?
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
29.08.2021, 18:11
Цитата Сообщение от Fylhtq05 Посмотреть сообщение
Когнитивный диссонанс случится?
Нет, багов меньше будет — потому эту фичу из плюсов и не взяли, что это рассадник багов.

Цитата Сообщение от Fylhtq05 Посмотреть сообщение
Почему локальные методы компилятор может переносить в класс
Локальные методы — это локальные методы.
Как их реализует компилятор: через, классы, копроцедуры или ассемблерные вставки — дело компилятора.
Мы же про синтаксис C# говорим.
1
109 / 52 / 16
Регистрация: 09.06.2021
Сообщений: 480
29.08.2021, 18:31  [ТС]
Цитата Сообщение от kolorotur Посмотреть сообщение
Нет, багов меньше будет — потому эту фичу из плюсов и не взяли, что это рассадник багов.
Похоже, вы правы. Только не могу придумать, какой может быть баг?
Цитата Сообщение от kolorotur Посмотреть сообщение
Локальные методы — это локальные методы.
"Этa нога — у того, у кого надо нога."
Цитата Сообщение от kolorotur Посмотреть сообщение
Как их реализует компилятор: через, классы, копроцедуры или ассемблерные вставки — дело компилятора.
Мы же про синтаксис C# говорим.
Синтаксис C# допускал локальные методы в прежних версиях? Ничего не случилось, что в новых стал допускать. Почему бы
аналогично и со статиком. Имхо, все же либо это сделают, либо действительно, как вы написали, есть какие-то возможные баги. Все же какие?
Что такое копроцедура? Поисковик не дал ответа.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
29.08.2021, 18:48
Цитата Сообщение от Fylhtq05 Посмотреть сообщение
какой может быть баг?
Да такой же, какой может быть с любой переменной, сохраняющей значение между вызовами: думали, что у нее одно значение, а оказалось другое.
С полями класса хотя бы более заметно, что ведется работа с общим ресурсом.

Цитата Сообщение от Fylhtq05 Посмотреть сообщение
Этa нога — у того, у кого надо нога.
Я о разделении методов и состояния. Локальный метод — не состояние.

Цитата Сообщение от Fylhtq05 Посмотреть сообщение
Почему бы аналогично и со статиком
Дык кто же спорит — может и их добавят.
Язык создавался более 20-и лет назад. Разработчики, мотивация и философия постоянно меняются — вон уже добавили инструкции верхнего уровня, глобальные и автоматические(!!!!) юзинги. Не удивлюсь, что и статические локальные рано или поздно добавят.
1
109 / 52 / 16
Регистрация: 09.06.2021
Сообщений: 480
29.08.2021, 19:11  [ТС]
Цитата Сообщение от kolorotur Посмотреть сообщение
думали, что у нее одно значение, а оказалось другое.
Согласен, багов будет больше. Можно рекомендовать в учебниках: только для опытных и для небольших методов. Тем более, что в С# можно использовать С++, в котором есть такое.
Цитата Сообщение от kolorotur Посмотреть сообщение
автоматические(!!!!) юзинги
Вы про то, что теперь не надо после юзинга писать фигурные скобки или про что-то, что я не знаю?
Все же упомянутые вами копроцедуры это опечатка или что? Поисковик не нашел.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
30.08.2021, 01:47
Цитата Сообщение от Fylhtq05 Посмотреть сообщение
Вы про то, что теперь не надо после юзинга писать фигурные скобки или про что-то, что я не знаю?
В 10-й, еще не вышедшей официально версии, можно в шапке файла не писать всякие using System: если имя типа встречается только в одной зависимости/пространстве, то компилятор сам "догадается" какое пространство имеется в виду.

Цитата Сообщение от Fylhtq05 Посмотреть сообщение
Все же упомянутые вами копроцедуры это опечатка или что?
Это я так мастерски coroutines перевел.
Прошу прощения — с русской терминологией у меня печаль.
1
HF
 Аватар для HF
1316 / 895 / 200
Регистрация: 09.09.2011
Сообщений: 2,669
Записей в блоге: 2
30.08.2021, 12:36
Цитата Сообщение от Fylhtq05 Посмотреть сообщение
Это не для меня. Мне бы с основами языка разобраться. Вопрос задавал, чтобы узнать возможные проблемы.
Это не мне. Друг спрашивает.

Цитата Сообщение от Fylhtq05 Посмотреть сообщение
Необходимости нет, а польза могла бы быть: я написал в первом сообщении, когда такой синтаксис был бы полезен.
Значит на текущий момент никто и пользы не находил. "Могла быть" - фраза именно для отсева таких идей.

Цитата Сообщение от Fylhtq05 Посмотреть сообщение
2. Почему нет локальных enum, т.е. объявленных в методе? В случае, если метод содержит и локальный метод, то во внешнем методе enum мог бы быть полезен для передачи параметра в локальный метод. Или я ошибаюсь?
Когда я был молод и горяч, то тоже часто "негодовал". Но потом очень быстро понял - это пока я не достиг нужного уровня. Потому что при повышении опыта, на старые вопросы находятся ответы, и новых вопросов возникает тоже меньше так как больше начинаешь осмысливать сам.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.08.2021, 12:36
Помогаю со студенческими работами здесь

Нужно узнать зачем здесь эдит и что делать вообще
Нужно узнать.зачем здесь эдит и что делать вообще

Зачем вообще нужно слово NULL если можно просто написать 0?
Для чего нужны все эти слова как например NULL, EOF? Вместо них можно просто цифры написать.

Зачем вообще нужно IP упаковывать в Ethernet, почему не сделали один протокол?
Нет это понятно, что у данных протоколов сейчас разный функционал.Но интересно а кто-нибудь задавался таким вопросом? зачем это...

Зачем нужно явно указывать тип переменной?
Всем привет! Объясните зачем нужно явно указывать тип переменной? Например в С++ это обязательно, а php нет. Просто говорят что не...

QList<enum> приведение типов
Добрый день. Выручайте. Qt 5 под VS MyClass.h enum CuteEnum { Zero, One, Two, Three


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru