наконец таки они появились. отсутствие параметров по умолчанию и необходимость перегрузок чтобы добиться желаемого результата очень удручала. с нетерпением жду описания новых фкусностей четвертого дот нета!
Зависит от того сколько в среднем параметров нужно передать методу, если опускается пара параметров из, например, двадцати, то через запятые удобнее, но если из двадцати только пару нужно передать, то рулят именованные параметры.
Не могу не соглоситься, но могу дополнить.
Вероятность ошибки при передаче параметров именованными значеними намного ниже. В теперешних реалях программирования этот факт нельзя не учитывать. Но комментарий был не об этом )
да, запятая самое то и наглядно и не будет последствий от переименования,
но вот у майкрософт бывают загоны, далее выпустят C# 4.1, в нем будет запятой пропускаться.
что-то мне подсказывает что перезагрузками, просто теперь отпадает необходимость писать их самостоятельно… хотя именованные параметры смущают, их простой перегрузкой не реализовать…
Скорее всего компилятор сам подставляет нужные значения. Тоесть Вы пишите testClass.PerformOperation(«val», val3: 10.2); а компилятор преобразует это в testClass.PerformOperation(«val», 10, 12.3);
никаких атрибутов, да и CLR, насколько я знаю, из-за совместимости изменения вноситься не могут. Все новшества — это очень-очень вкусный «синтаксический сахар»
Если так, то эта фича не будет работать с откомпилированными библиотеками, если исходного кода нет под рукой. Мета-информация о значениях по-умолчанию должна быть известна.
Атрибуты, на сколько я понял, нужны компилятору. Он определяет дефолтные значения во время компиляции и подставляет их в параметры в виде констант. Так что скорость работы не изменится.
классно, спасибо. а на счет гемора с указанием именнованного параметра и трудностями чтобы сменить его название, а разве Rename тут не работает так же как с переменными? я надеюсь эта возможность реализована в этом случае
Это зависимость от инструмента разработки получается. Откроете вы как-нибудь файл в блокноте, смените название параметра — тут все и не скомпилируется.
ну это крайности :) это одно и тоже что если вы название какого-то метода захотите поменять, без VS тоже не удобно :)) Есть конечно банальный Replace в блокноте, но это не выход же :)
Согласен. И вообще, мне не понятно, неужели C# 3.0 настолько изжил себя, что возникла острая необходимость в следующей версии? Многие ещё до сих пор LINQ не освоили…
множественное наследование по-моему в шарпе не будет никогда, они заменили эту фичу наследованием от нескольких интерфейсов. чо-то подобное — не помню точно
Не совсем. Они сделали отдельную конструкцию «интерфейс» (в плюсах ее нет, вместо нее используются абстрактные классы), и разрешили множественное наследование только от нее, что мне лично очень нравится.
Даже не знаю, что и сказать. Дефолтные значения довольно удобны, а вот именованные параметры буду стараться использовать как можно меньше, только там, где это действительно необходимо.
Ндяс, сначала С# представлял из себя эдакий маленький удобный язык, который даже школьник поймёт — лёгкая замена Бейсику, конкурент Java, простая альтернатива сложному и коварному С++.
Но теперь мне кажется что совсем скоро С# сможет тягаться в сложности с С++ — и очарование пропадёт :)
Еще пару лет и шарп будет неотличим от плюсов. Все к тому идет. Шаблоны ввели, вот, наконец-то, параметры сделали. Еще пару штрихов и всё — привет, плюсы :)
Черезвычайно полезно, когда появляются вот такие вот статьи. Так, постепенно, маленькими дозами можно легко освоить все нововведения языка. Буду рад, если они будут появляться и дальше, чтобы с выходом C# 4.0 свободно пользоваться новыми возможностями.
Да уж, не знаю, радоваться этому, или нет… Использование перегрузки однозначно говорило о том, что дефолтные параметры — плохо. Теперь это вроде как чисто и красиво.
Смешно если честно.
Delphi имел параметры по умолчанию не помню с какой точно, но точно с младших версий. У C# разработчик языка один и тот же, а только собираются вводить такую фичу.
Всегда от этих перегрузок тошнило, из-за них сижу на VB и над C#-щиками действительно злостно посмеиваюсь :) Теперь наверно скоро на C# можно будет переходить, правда не думаю, что в этот раз параметры по умолчанию сделают достаточно хорошо. Чего-нибудь обязательно не доделают, взять хотя бы эти запятые.
Новые возможности C# 4.0. Часть 2: параметры по умолчанию