IT>>Ну вот сам и ответил — почему
IVNС>Вовсе не ответил
Ну как же? Действительно
DoSome(123, "abc", defparam, true) выглядит лучше, чем
DoSome(123, "abc", , true)
IT>>Еще может удобным был бы синтаксис DoSome (Value1, Value2, DefParam1 = Value3, DefParam5 = Value4), но только тут смысл двоится — то-ли параметру задаешь знаечение, то ли локальной пеерменной... напутать можно.
IVNС>Да ну, это ты предложил изврат какой-то
Ну вот еще сравниваем
SaveToFime(FileName, defparam, defparam, defparam, defparam, true, defparam, defparam)
и
SaveToFime(FileName, SaveAsUnicode = true)
Что читабельнее?
Здравствуйте Igor Trofimov, Вы писали:
IT>>Ну вот еще сравниваем
SaveToFime(FileName, defparam, defparam, defparam, defparam, true, defparam, defparam)
и
SaveToFime(FileName, SaveAsUnicode = true)
IT>>Что читабельнее?
Читабельнее, вроде бы как, второе. Но 1)в моем случае я при прописывании вызова метода пользуюсь IntelliSence, а, поскольку позиции параметров фиксированы, я сразу вижу, что данный defparam представляет дефолтное значение определенного параметра.
2)ты предлагаешь реализовать непозиционное указание параметров методов. Нечто немного похожее уже реализовано — при указании атрибутов можно устанавливать переменные атрибута именно таким образом (вне конструктора, конечно —
[SaveToFime(FileName), SaveAsUnicode = true])
Подход при нумерации defparam не годится, потому что при добавлении еще одного параметра в метод вся нумерация летит к черту.
Можно сделать вот что: ввести еще одно ключевое слово — param.
SaveToFime(FileName, param.SaveAsUnicode = true)
Фактически, это ключевое слово представляет собой структуру. Кстати, это кл. слово поможет при разрешении конфликтов имен параметров и переменных
Представь себе:
class Class1 {
string s1;
void DoSome(string s1, string s2 = "bgbfgf") {
// local s1
string s1;
// local s1 = param s1
s1 = param.s1;
// class member s1 = local s1
this.s1 = s1;
}
}
По-моему, неплохо. Единственное — компилер должен ругаться, если встретит в одной строке после описания первого непозиционного параметра позиционный, или слово defparam.
Получается очень гибко и красиво.