|
Заблокирован
|
|
Зачем в .NET в 2014 г. строгая типизация? Зачем нужно писать Convert.ToInt32(), ToString(), Int32.Parse()?31.07.2014, 19:54. Показов 2734. Ответов 10
Метки нет (Все метки)
По поводу преобразования.
Современный препроцессор кода сам определяет, что куда преобразовывать. Если в функцию, принимающую строку, передать число, то он не только видит ошибку, но и видит, что нужно преобразовать именно число и именно в строку. Почему бы ему самому (точнее, компилятору) не делать это в MSILе, который он дает на выходе? А в коде пусть не будет этих бесконечных Convertов, ToStringов и прочего. Как в VB.NET, но еще лучше (там, если не ошибаюсь, это дело местами все-таки нужно). По поводу типизации вообще. C#, VB.NET, C++/CLI используют управляемый код. В чем проблема реализовать динамическую типизацию? Объявили переменную без типа - она становится самого экономичного в плане ресурсов типа (bool, если не путаю). Присвоили ей строку - она становится String. Записали в нее число - она становится Integer/Float/... (смотря какое число). Записали обратно строку - снова String. Передали в функцию, которая на входе принимает не строку, а число - попытались преобразовать ее в число - не получилось - выдали необработанное исключение. Problems? По идее, это должно еще и экономить ОЗУ для не очень качественных кодов, ведь под каждую переменную будет отведен предельный минимум памяти. Чтобы не было путаницы с типами для самого программиста, есть венгерское соглашение. Или можно придумать ему достойную и удобную современную замену. И еще (уже не совсем по теме). Почему не сделать для контролов, скажем так, "основные свойства", чтобы например вместо pictureBox1.Image можно было написать просто pictureBox1 в соответствующем контексте? Или просто textBox1 вместо textBox1.Text. Такая практика была распространена в Visual Basic до-.NET-овской эпохи. В VB.NET ее не внедрили или отказались, и очень зря. Где я неправ?
0
|
|
| 31.07.2014, 19:54 | |
|
Ответы с готовыми решениями:
10
Есть ли разница между int.Parse и Convert.ToInt32 ? Зачем и когда нужно писать ключевое слово static
|
|
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
|
||||||||||||
| 31.07.2014, 20:10 | ||||||||||||
Статическая типизация во многом облегчает анализ кода, за счет чего можно писать хорошие IDE со средствами автодополнения, навигации и рефакторинга.
0
|
||||||||||||
|
Заблокирован
|
|||||||||||||||||||||||||||||||
| 31.07.2014, 21:09 [ТС] | |||||||||||||||||||||||||||||||
Сделать уж 1 тип сразу по максимуму, цифры на 32, двойной точности да с плавающей запятой и везде его юзать.
А благодаря венгерскому соглашению, они сразу видны. Оно неудобно тем, что префиксы надо держать в памяти и придумывать самому (или брать из редких нестандартизированных источников) для современных контролов. Почему бы не автоматизировать эти процессы в IDE по определенному стандарту? Вплоть до того, что пишешь скажем
0
|
|||||||||||||||||||||||||||||||
|
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
|
||||||
| 31.07.2014, 22:05 | ||||||
|
Тема - холивар. Я сливаюсь.
0
|
||||||
|
Заблокирован
|
||||||
| 31.07.2014, 22:19 [ТС] | ||||||
|
Петррр,
Button как тип будет по-любому. Может его даже и придется задавать явно. Я больше про такие вещи, как строки и числа.
Может с таких извращенных позиций жаба и быстрее С++.
При строгой типизации, человек, дабы побыстрее, сделает все переменные Integer, хотя во многих случаях можно было бы обойтись чем-то полегче. При динамической типизации, компилятор сам решит, какого типа должна быть каждая переменная, в зависимости от значений, которые в ней оказываются при выполнении программы.
Если же сделать Image, передать его в какую-то функцию для работы с картинкой, а потом взять и присвоить этой переменной PictureBox, то оно должно присвоиться, но IntelliSense выдаст warning, а при отладке будет не то, что ожидал юзер.
0
|
||||||
|
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
|
||||||
| 31.07.2014, 22:31 | ||||||
а вообще для любителей есть IronPython вроде как. и руби было.
1
|
||||||
|
Заблокирован
|
|||||
| 31.07.2014, 22:42 [ТС] | |||||
|
pycture,
Но почему-то простое гуевое приложение с окошком и кнопочкой хелловорлд, на джаве кушает куда больше ресурсов и запускается в разы медленнее, чем аналогичное на питоне. А если туда еще текстовое поле добавить, или что еще посерьезнее - то приложение на джаве уже провисать начинает на компе со слабым ОЗУ. Приложение на питоне на компе с тем же ОЗУ - не провисает, даже когда запущено то приложение на джаве.
Надо модификацию C# и сервис пак для VS, обеспечивающий с ней удобную работу. В частности, именно IDE - в примитивном варианте - отвечает за автогенерирование Convert'ов и прочих ToString'ов. Если я буду такое писать, я вряд ли буду сам с нуля писать компилятор шарпа, только ради того, чтобы внести в него эти поправки. Но перед компиляцией код пройдет через особый препроцессор, который сгенерирует конверты и т.д. При этом код, выданный препроцессором, программист тоже сможет свободно изменять, а при желании вообще отключить препроцессор к чертям. И IDE - либо напишу свою, либо сделаю плагины для VS/SharpDevelop. Лучше бы первое.
В динамически - остается много вопросов, надо много думать и пробовать, но на первый взгляд, идея динамически типизированной (или вовсе "слаботипизированной") реализации С#, лично мне кажется очень перспективной.
0
|
|||||
| 01.08.2014, 01:34 | |
|
Не по теме: ВЗ, за тобой прикольно со стороны наблюдать, такие темы перспективные создаешь, далеко пойдешь :popcorn:
0
|
|
|
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
|
||||
| 01.08.2014, 07:16 | ||||
0
|
||||
|
1322 / 995 / 127
Регистрация: 08.12.2009
Сообщений: 1,299
|
|
| 02.08.2014, 01:11 | |
|
NickoTin, вот испортил всё впечатление)) только хотел написать, что сон разума рождает чудовищ..)
0
|
|
|
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
|
|
| 02.08.2014, 22:14 | |
|
Автору темы, зачем писать - сделайте и покажите как надо. А то так разсуждать каждый дурак сможет.
0
|
|
| 02.08.2014, 22:14 | |
|
Помогаю со студенческими работами здесь
11
Зачем нужна cms? Это типа шаблонов сайтов? Нужно ли без неё писать? Строгая типизация Зачем переопределять методы ToString(), GetHashCode(), Equals() Зачем биты нужны это меньше байтов но int 32 бита но я не допер зачем это нужно это 4 байта то есть int не может больше 4 байт весить? Зачем писать randomize() Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
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 05.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 .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|