Pull to refresh

Comments 21

А нельзя написать вот так?

public Thingy(string name = «Default», int whatever = -1)
{
_name = name;
_whatever = whatever;
}
Уже было, да текста намного меньше, чем кода; причем такого, что можно найти в любом обзоре C# 4.

P.S. все это, и многое другое уже реализовано в Nemerle.
По-моему, немного поздновато, новые возможности .Net 4.0 уже несколько раз обсуждались. :o)
Не знаю как у вас, у нас в php это уже лет 10 присутсвует :)
как и в Visual Basic :)

просто в спецификации CLI нет таких параметров для возможности унификации языков
да и сейчас по сути ничего не поменялось, ввели синтаксический сахар, вся работа через атрибуты
Действительно странно, что дефолтные значения аргументов так поздно решили прикрутить. Особенно с учетом того, что это — не более чем синтаксический сахар.
На месте девелоперов я бы еще в C# 2.0 их воткнул. )
все кому надо, делали эти дефолтные значения руками :) там делов то: атрибут написать
А ведь, если я не ошибаюсь, в первой (второй, третьей) версии шарпа это яростно отвергалось?
Говорилось, что дефолтные значения параметров — от лукавого.
Никто не хотел превращать c# в скриптовый язык. Но, судя по всему, к тому и идет. Народ требует
Самое главное, что можно свободно не использовать эти скриптовые рюшечки…
UFO landed and left these words here
в чем проявляется «превращение в скриптовый язык»?
Вероятно, имеется в вид что он становится таким же красивым и понятным как скриптоновые языки вроде Python и Ruby =)
Петросянишь? Молодцом, тут очень не хватает таких.

Имелось в виду то, что уходит его первоначальная строгость. Появляются такие возможности как при вызове пропуск параметров методов, var, dynamic.

C# идет по дороге развития динамического языка программирования, что хорошо, вместе с тем теряя свою строгость, что не нравится лично мне.
Отлично, понемногу в свободное время изучаю C#. После основной работы, связанной с PHP очень не хватает default параметров
ИМХО, пример не очень подобран :) Пустой (первый) конструктор явно в реальной жизни будет использовать второй, а не третий:
public Thingy()
  : this("Default")
{
}

public Thingy(string name)
  : this(name, -1)
{
}


* This source code was highlighted with Source Code Highlighter.


и тогда дефолтные значения так же будут описаны только в одном месте.

P.S. Это я не придираюсь, просто первое, что бросилось в глаза.
Слава Биллу!

Интересно, а что будет в 5 версии?
>>> public Thingy([Optional,DefaultParameterValue(«Default»)] string name,
>>> [Optional, DefaultParameterValue(-1)]int whatever)

а покороче то никак немогли придумать?

Sign up to leave a comment.

Articles