Default-параметры в ф-циях на C#
От: Oxy  
Дата: 19.12.03 11:27
Оценка: 3 (1) +1
Привет!
Можно ли описывать на C# ф-ции с дефолтовыми параметрами? То есть если я не задам этот параметр он автоматически примет какое то наперед заданное значение.
Re: Default-параметры в ф-циях на C#
От: Воронков Василий Россия  
Дата: 19.12.03 11:29
Оценка: +1
"Oxy" <5701@news.rsdn.ru> wrote in message news:484389@news.rsdn.ru...
> Привет!
> Можно ли описывать на C# ф-ции с дефолтовыми параметрами? То есть если я не задам этот параметр он автоматически примет какое то наперед заданное значение.

В принципе нет. Такие вещи делают через перегрузку:

void A(object o1, object o2)
{
}

void A(object o1)
{
A(o1, <default_o2>);
}
Posted via RSDN NNTP Server 1.8 beta
Re: Default-параметры в ф-циях на C#
От: SiAVoL Россия  
Дата: 19.12.03 11:31
Оценка: 13 (1) +1
Здравствуйте, Oxy, Вы писали:

Oxy>Привет!

Oxy>Можно ли описывать на C# ф-ции с дефолтовыми параметрами? То есть если я не задам этот параметр он автоматически примет какое то наперед заданное значение.

Нельзя, но для этих целей можно использовать перегрузку
int DoSmth(string str)
{
    DoSmt(str, 5);
}

int DoSmth(string str, int i)
{
    Console.WriteLine(str + i.ToString());
}
... << RSDN@Home 1.1.2 beta 2 >>
Re[2]: Default-параметры в ф-циях на C#
От: Oxy  
Дата: 19.12.03 11:44
Оценка: +2
Здравствуйте, SiAVoL, Вы писали:

SAV>Нельзя, но для этих целей можно использовать перегрузку

SAV>
SAV>int DoSmth(string str)
SAV>{
SAV>    DoSmt(str, 5);
SAV>}

SAV>int DoSmth(string str, int i)
SAV>{
SAV>    Console.WriteLine(str + i.ToString());
SAV>}
SAV>


То есть что бы использовать эту удобную возможность мне надо дублировать огромную кучу кода из=за 2-3 дополнительных строчек. Это разработчики так прикалываются?
Re[3]: Default-параметры в ф-циях на C#
От: Dr_Sh0ck Беларусь  
Дата: 19.12.03 11:57
Оценка: :)
Здравствуйте, Oxy, Вы писали:

Oxy>То есть что бы использовать эту удобную возможность мне надо дублировать огромную кучу кода из=за 2-3 дополнительных строчек. Это разработчики так прикалываются?


Они еще и не так могут
Do not fake yourself ;)
ICQ#: 198114726
Re[3]: Default-параметры в ф-циях на C#
От: SiAVoL Россия  
Дата: 19.12.03 12:06
Оценка:
Здравствуйте, Oxy, Вы писали:

Oxy>То есть что бы использовать эту удобную возможность мне надо дублировать огромную кучу кода из=за 2-3 дополнительных строчек. Это разработчики так прикалываются?


В этом
Автор: nap2k
Дата: 22.07.03
топике активно обсуждали этот вопрос
... << RSDN@Home 1.1.2 beta 2 >>
Re: Default-параметры в ф-циях на C#
От: Gerion Россия http://agents.russia.webmatrixhosting.net
Дата: 19.12.03 16:28
Оценка: -3
Можно попробовать решить вашу проблему следующим образом,
считая что при равенстве параметра -1 используется значение по умолчанию:

        public void GetItem(int param1, int param2, int param3)
        {
            if(param1 == -1) param1 = 10;
            if(param2 == -1) param2 = 10;
            if(param3 == -1) param3 = 10;
                        .......................................................
        }


Для ссылочных параметров можно в данном случае использовать сравнение с null:


                public class MyClass
                {
                        public int x;
                }

                public void GetItem2(MyClass param1,MyClass param2,MyClass param3)
                {
                        if(param1 == null) 
                        {
                                param1 = new MyClass();
                                param1.x = 10;
                        }
                        if(param2 == null) 
                        {
                                param2 = new MyClass();
                                param2.x = 10;
                        }
                        if(param3 == null) 
                        {
                                param3 = new MyClass();
                                param3.x = 10;
                        }
                        .............................
                }
Re[2]: Default-параметры в ф-циях на C#
От: Igor Trofimov  
Дата: 19.12.03 16:34
Оценка: 1 (1) -1
G>считая что при равенстве параметра -1 используется значение по умолчанию:

По-моему, это наихудшее решение. И ведет к неприятностям.
Ничего личного.
Re[3]: Default-параметры в ф-циях на C#
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 19.12.03 16:35
Оценка:
Здравствуйте, Oxy, Вы писали:



Oxy>То есть что бы использовать эту удобную возможность мне надо дублировать огромную кучу кода из=за 2-3 дополнительных строчек. Это разработчики так прикалываются?


Помоему в Васике они есть. Но второй выход использование массивов параметров.
и солнце б утром не вставало, когда бы не было меня
Re[3]: Default-параметры в ф-циях на C#
От: Gerion Россия http://agents.russia.webmatrixhosting.net
Дата: 19.12.03 16:41
Оценка: -1
Здравствуйте, Igor Trofimov, Вы писали:

G>>считая что при равенстве параметра -1 используется значение по умолчанию:


iT>По-моему, это наихудшее решение. И ведет к неприятностям.

iT>Ничего личного.

Это зависит от решаемой задачи.
Если рассматривать в широком смысле, то оно вообще не применимо.
Можно использовать второй способ решения, передавая размерный тип в ссылочном.
Re[3]: Default-параметры в ф-циях на C#
От: mihailik Украина  
Дата: 22.12.03 09:15
Оценка:
Oxy>То есть что бы использовать эту удобную возможность мне надо дублировать огромную кучу кода из=за 2-3 дополнительных строчек.

Не преувеличивай. По три строчки каждую на перегрузку. Ты же не собираешься отдельно реализовывать каждый раз функцию, просто вызываешь более конкретный вариант из более общего.
... << RSDN@Home 1.1.0 stable >>
Re[4]: Default-параметры в ф-циях на C#
От: Oxy  
Дата: 22.12.03 09:24
Оценка: +1
Здравствуйте, mihailik, Вы писали:

Oxy>>То есть что бы использовать эту удобную возможность мне надо дублировать огромную кучу кода из=за 2-3 дополнительных строчек.


M>Не преувеличивай. По три строчки каждую на перегрузку. Ты же не собираешься отдельно реализовывать каждый раз функцию, просто вызываешь более конкретный вариант из более общего.


Ну вообще то можно и так. Но все равно это, ИМХО, не удобно.
Re[5]: Default-параметры в ф-циях на C#
От: Аноним  
Дата: 22.12.03 10:31
Оценка:
Oxy>Но все равно это, ИМХО, не удобно.
По-моему, наоборот — вариант с перегрузкой логичнее. Если собираешься использовать функцию с параметрами по умолчанию, то по умолчанию, подразумевается, что ты должен знать, какие это значения. При перегрузке, никакой дополнительной информации не требуется — просто используется нужный набор параметров.
Re[2]: Default-параметры в ф-циях на C#
От: Аноним  
Дата: 22.12.03 10:51
Оценка:
Здравствуйте, Gerion, Вы писали:

G>Можно попробовать решить вашу проблему следующим образом,

G>считая что при равенстве параметра -1 используется значение по умолчанию:
В качестве значения отсутствующего параметра по умолчанию (если уж понадобилось) можно (или нужно) использовать Type.Missing.
Re[6]: Default-параметры в ф-циях на C#
От: Oxy  
Дата: 22.12.03 10:59
Оценка:
Здравствуйте, Аноним, Вы писали:

А>По-моему, наоборот — вариант с перегрузкой логичнее. Если собираешься использовать функцию с параметрами по


Может и логичнее, но, отнюдь, не удобнее. ИМХО, конечно.
Re[2]: Default-параметры в ф-циях на C#
От: Oxy  
Дата: 22.12.03 11:10
Оценка:
Здравствуйте, Gerion, Вы писали:

G>Можно попробовать решить вашу проблему следующим образом,


<skip>

Вы наверно не прняли в чем именно дело. Я просто не хочу явно передавать параметр если он мне не нужен.

Например
void do_something (int i, int j = 0)


Например я вызываю
do_something(1,1);

Тогда j принимает вполне конкретное значение 1.
или
do_something(1);

Тогда j принимает значение 0 (по умолчанию)
Это очень удобно. По крайней мере для меня. Я использовал эту возможность как в С++ так и Delphi и привык к ней.
Конечно, как в этом топике уже писали, можно применять перегрузку, но мне это не нравится. Не мешало бы разработчикам C# перенять эту возможность из С++ раз уж это С.
Re[7]: Default-параметры в ф-циях на C#
От: Stoune  
Дата: 25.12.03 02:02
Оценка:
Здравствуйте, Oxy, Вы писали:

Oxy>Здравствуйте, Аноним, Вы писали:


А>>По-моему, наоборот — вариант с перегрузкой логичнее. Если собираешься использовать функцию с параметрами по


Oxy>Может и логичнее, но, отнюдь, не удобнее. ИМХО, конечно.


Пути Биловой команды неисповедимы.
Маємо те що маємо. Л.Кравчук:E... << RSDN@Home 1.1.2 beta 1 >>
Re[3]: Default-параметры в ф-циях на C#
От: Ransom Stark Россия  
Дата: 25.12.03 08:44
Оценка: +1
Oxy>Конечно, как в этом топике уже писали, можно применять перегрузку, но мне это не нравится. Не мешало бы разработчикам C# перенять эту возможность из С++ раз уж это С.
Судя по всему, от этой возможности отказались вполне сознательно.
Re[3]: Default-параметры в ф-циях на C#
От: FL  
Дата: 26.12.03 12:27
Оценка:
А>В качестве значения отсутствующего параметра по умолчанию (если уж понадобилось) можно (или нужно) использовать Type.Missing.

Параметр по умолчанию очень удобен, когда добавляется параметр функции, и не хочется переписывать старый код. Type.Missing этой проблемы не решает.
... << RSDN@Home 1.1.0 stable >>
Re[4]: Default-параметры в ф-циях на C#
От: Ransom Stark Россия  
Дата: 26.12.03 13:34
Оценка: 22 (1)
FL>Параметр по умолчанию очень удобен, когда добавляется параметр функции, и не хочется переписывать старый код.
Т.е., изменить сигнатуру функции и от души посмеяться над теми, у кого функция перестанет вызываться?
IMHO, пример создания потенциальных проблем на пустом месте — и всё из за трёх строчек кода?
Другое дело, если в функции 40 параметров, и каждый не обязателен. Как такое писать на шарпе — не представляю. Но надеюсь, никогда и не узнаю.

FL>Type.Missing этой проблемы не решает.

Вариант с Type.Missing не самый удобный, но позволяет избавиться от двусмысленности.
Re[5]: Default-параметры в ф-циях на C#
От: Lloyd Россия  
Дата: 26.12.03 13:57
Оценка: +1
Здравствуйте, Ransom Stark, Вы писали:

FL>>Параметр по умолчанию очень удобен, когда добавляется параметр функции, и не хочется переписывать старый код.

RS>Т.е., изменить сигнатуру функции и от души посмеяться над теми, у кого функция перестанет вызываться?
RS>IMHO, пример создания потенциальных проблем на пустом месте — и всё из за трёх строчек кода?
RS>Другое дело, если в функции 40 параметров, и каждый не обязателен. Как такое писать на шарпе — не представляю. Но надеюсь, никогда и не узнаю.

Создать класс с 40 полями и передавать в фунцию его экземпляр. В конструкторе полям приписываются значения по умоланию.
... << RSDN@Home 1.1.2 beta 1 >>
Re[6]: Default-параметры в ф-циях на C#
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 26.12.03 14:07
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Создать класс с 40 полями и передавать в фунцию его экземпляр. В конструкторе полям приписываются значения по умоланию.

Ну зачем же сразу класс, можно ссылку на структуру. Обычный подход с дефаултным конструктором
Массив параметров вам тоже поможет
и солнце б утром не вставало, когда бы не было меня
Re[7]: Default-параметры в ф-циях на C#
От: Ransom Stark Россия  
Дата: 26.12.03 14:18
Оценка:
L>>Создать класс с 40 полями и передавать в фунцию его экземпляр. В конструкторе полям приписываются значения по умоланию.
S> Ну зачем же сразу класс, можно ссылку на структуру. Обычный подход с дефаултным конструктором
Если обобщить и вернуться к теме — IMHO, параметры по умолчанию — не лучший выбор с точки зрения стиля и дизайна
Re[5]: Default-параметры в ф-циях на C#
От: Oxy  
Дата: 26.12.03 14:22
Оценка:
Хорошо, вот пример из жизни.
Надо сделать такую ф-ию. На С я бы сделал так
bool FillDropDownList(DropDownList ddl, string alias, string sql, string AllText = "")
{
  DataTable dt = SqlAccess.GetDataTable(alias, sql);
  if (AllText != "") {
    DataRow dr = dt.NewRow();
    dr[0] = 0;
    dr[1] = AllText;
    dt.Rows.InsertAt(dr, 0);
  }
  ddl.DataSource = dt.DefaultView;
  ddl.DataValueField = dt.Columns[0].ColumnName;
  ddl.DataTextField = dt.Columns[1].ColumnName;
  ddl.DataBind();
  ddl.EnableViewState = true;
  ddl.Visible = true;
  dt = null;
  return true;
}

Все понятно. Задал параметр, значит будет добавляться AllText, не задал не будет.
Возникает вопрос, а как сделать аналогичную конструкцию на С#?
1. Сделать две перегруженные копии ф-ции. В одной будет добавление All а в другой — нет. Это имхо неудобно если потребуется изменить код ф-ции. Прийдется менят в двух местах.
2. Создать 3 ф-ции
Две из них это интерфейсы к третьей, которая собственно и будет делать всю работу.
3. Использовать все же ф-цию с 2 параметрами и всегда их явно указывать. Это, имхо, лучший вариант, но стоило ли тогда огород городить...

Это я к тому, что некоторые говорят будто перегрузка всегда лучше и логичнее чем дефолтовые параметры. Не лучшее. И лучше бы они оставили в C# параметры по умолчанию.
Re[7]: Default-параметры в ф-циях на C#
От: Lloyd Россия  
Дата: 26.12.03 14:22
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>Здравствуйте, Lloyd, Вы писали:


L>>Создать класс с 40 полями и передавать в фунцию его экземпляр. В конструкторе полям приписываются значения по умоланию.

S> Ну зачем же сразу класс, можно ссылку на структуру. Обычный подход с дефаултным конструктором

Класс -- потому что это стандартый подход (патерн) для данной проблемы. Кажется так и называется Parameter.

Дефаултный конструктор у структуры? Нука-нука. Расскажи.

Да и зачем ссылку? Ты собрался значения через нее что-ли возвращать?

S> Массив параметров вам тоже поможет


Угу. Нам типа плевать на типобезопасность и все такое. Как что-ли?
... << RSDN@Home 1.1.2 beta 1 >>
Re[8]: Default-параметры в ф-циях на C#
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 26.12.03 14:36
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Дефаултный конструктор у структуры? Нука-нука. Расскажи.


Не расскажу. Хоть и нельзя но можно. Просто под конструктором может выступаь любая статическая функция. С Новым Годом!!! И больше положительных Эмоций!!!
L>Да и зачем ссылку? Ты собрался значения через нее что-ли возвращать?

Во Во сишники. Как Win Api так ссылки на структуры нормальное явление. Классы ни ни.
Только стек и никаких куч.
S>> Массив параметров вам тоже поможет

L>Угу. Нам типа плевать на типобезопасность и все такое. Как что-ли?

Чья проблема, тот так и реализует.
Еще раз С Нвым Годом!!!!
и солнце б утром не вставало, когда бы не было меня
Re[8]: Default-параметры в ф-циях на C#
От: Oxy  
Дата: 26.12.03 14:47
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Угу. Нам типа плевать на типобезопасность и все такое. Как что-ли?


А мне лично плевать. Меня страшно бесит когда компиляция останавливается при попытке приравнить тип long к типу int.
Re[6]: Default-параметры в ф-циях на C#
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 26.12.03 14:51
Оценка: +1
Здравствуйте, Oxy, Вы писали:

Oxy>Возникает вопрос, а как сделать аналогичную конструкцию на С#?


bool FillDropDownList(DropDownList ddl, string alias, string sql)
{
    FillDropDownList(ddl, alias, sql, "");
}

bool FillDropDownList(DropDownList ddl, string alias, string sql, string AllText)
{
  DataTable dt = SqlAccess.GetDataTable(alias, sql);
  if (AllText != "") {
    DataRow dr = dt.NewRow();
    dr[0] = 0;
    dr[1] = AllText;
    dt.Rows.InsertAt(dr, 0);
  }
  ddl.DataSource = dt.DefaultView;
  ddl.DataValueField = dt.Columns[0].ColumnName;
  ddl.DataTextField = dt.Columns[1].ColumnName;
  ddl.DataBind();
  ddl.EnableViewState = true;
  ddl.Visible = true;
  dt = null;
  return true;
}
... << RSDN@Home 1.1.2 beta 2 (mobile station) >>
AVK Blog
Re[6]: Default-параметры в ф-циях на C#
От: Ransom Stark Россия  
Дата: 26.12.03 14:54
Оценка: +1
Здравствуйте, Oxy, Вы писали:

Oxy>Надо сделать такую ф-ию. На С я бы сделал так

Oxy>
Oxy>bool FillDropDownList(DropDownList ddl, string alias, string sql, string AllText = "")

так проблема-то в чём? Блин, одна строчка:
bool FillDropDownList(DropDownList ddl, string alias, string sql, string AllText){...}
bool FillDropDownList(DropDownList ddl, string alias, string sql){return FillDropDownList(ddl, alias, sql, "");}

С точки зрения дальнейшей работы надежнее и понятнее. "Либо так, либо так", вместо "так, но если очень хочется. то эдак"
Re[9]: Default-параметры в ф-циях на C#
От: Lloyd Россия  
Дата: 26.12.03 15:25
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>Здравствуйте, Lloyd, Вы писали:


L>>Дефаултный конструктор у структуры? Нука-нука. Расскажи.


S> Не расскажу. Хоть и нельзя но можно. Просто под конструктором может выступаь любая статическая функция. С Новым Годом!!! И больше положительных Эмоций!!!


А зачем тогда структура-то? Не понимаю.

L>>Да и зачем ссылку? Ты собрался значения через нее что-ли возвращать?


S>Во Во сишники. Как Win Api так ссылки на структуры нормальное явление. Классы ни ни.

S> Только стек и никаких куч.

Вообще-то, класс и стуктура в сях мало чем отличаются. Обласью видимости по умолчанию только (у класов -- приват, а структур -- паблик). Именно по этому и используют структуры. Чтобы лишний раз public не писать.

S>>> Массив параметров вам тоже поможет


L>>Угу. Нам типа плевать на типобезопасность и все такое. Как что-ли?

S> Чья проблема, тот так и реализует.

Опять не понял. Ты скажи прямо, плевать или нет?
Если не плевать, то как быть с параметрами разного типа, если плевать, то с вами, пациент, все ясно.

S> Еще раз С Нвым Годом!!!!


А почему С большая?

P.S. Nothing personal.
... << RSDN@Home 1.1.2 beta 1 >>
Re[10]: Default-параметры в ф-циях на C#
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 26.12.03 15:51
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>А зачем тогда структура-то? Не понимаю.


L>>>Да и зачем ссылку? Ты собрался значения через нее что-ли возвращать?


Ну разница есть оссобенно когда структура много.....
S>>Во Во сишники. Как Win Api так ссылки на структуры нормальное явление. Классы ни ни.
S>> Только стек и никаких куч.

L>Вообще-то, класс и стуктура в сях мало чем отличаются. Обласью видимости по умолчанию только (у класов -- приват, а структур -- паблик). Именно по этому и используют структуры. Чтобы лишний раз public не писать.


А в Net это отличие. Структура в зависимости от объявления может находитсы и в стеке. И согласно скорости ее и надо использовть.

S>>>> Массив параметров вам тоже поможет


L>>>Угу. Нам типа плевать на типобезопасность и все такое. Как что-ли?

S>> Чья проблема, тот так и реализует.

L>Опять не понял. Ты скажи прямо, плевать или нет?

L>Если не плевать, то как быть с параметрами разного типа, если плевать, то с вами, пациент, все ясно.
Ну значит разные Consol итд к Вам. Зачем же такой. Применяются налево и на право.
Ты в какой области Доктор????
ГОВОРЮ ПРЯМО. КОНЕЧНО НЕ ПЛЕВАТЬ. ПО СВОЕЙ СУТИ ПЕРЕДАЧА ССЫЛКИ НА СТРУКТУРУ или Объект лучше, чем запихивать в стек кучу нетипизированных данных, и их обработка в вызываемой процедуре.
Но понятие дефолтных параметров, если я конечно не ошибаюсь, появилась с Васика как и именованные параметры. Суть в общем таже.
А если рассматривать как передача по значению структуры или отделно взятых параметров то физический смысл один и тот же.


С Наступающим Новым Годом!!!!

L>А почему С большая?


L>P.S. Nothing personal.
и солнце б утром не вставало, когда бы не было меня
Re[11]: Default-параметры в ф-циях на C#
От: Lloyd Россия  
Дата: 26.12.03 16:03
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>Здравствуйте, Lloyd, Вы писали:


L>>А зачем тогда структура-то? Не понимаю.


L>>>>Да и зачем ссылку? Ты собрался значения через нее что-ли возвращать?


S> Ну разница есть оссобенно когда структура много.....


Что много ...? Ты загадками сегодня лучше не говори, конец недели все-таки. Соображаю туго.

S>>>Во Во сишники. Как Win Api так ссылки на структуры нормальное явление. Классы ни ни.

S>>> Только стек и никаких куч.

L>>Вообще-то, класс и стуктура в сях мало чем отличаются. Обласью видимости по умолчанию только (у класов -- приват, а структур -- паблик). Именно по этому и используют структуры. Чтобы лишний раз public не писать.


S> А в Net это отличие. Структура в зависимости от объявления может находитсы и в стеке. И согласно скорости ее и надо использовть.


А причем тут тогда winapi?

S>>>>> Массив параметров вам тоже поможет


L>>>>Угу. Нам типа плевать на типобезопасность и все такое. Как что-ли?

S>>> Чья проблема, тот так и реализует.

L>>Опять не понял. Ты скажи прямо, плевать или нет?

L>>Если не плевать, то как быть с параметрами разного типа, если плевать, то с вами, пациент, все ясно.
S> Ну значит разные Consol итд к Вам. Зачем же такой. Применяются налево и на право.

Ну во первых Consol вряд ли где примняется. А вот Console -- другое дело.
А ты подумай, много ли там изпользуется от передаваемого параметра? ToString да проверка на IFormattable разве только. Если ты согласен этим ограничиться, то welcome.

S>Ты в какой области Доктор????

S> ГОВОРЮ ПРЯМО. КОНЕЧНО НЕ ПЛЕВАТЬ. ПО СВОЕЙ СУТИ ПЕРЕДАЧА ССЫЛКИ НА СТРУКТУРУ или Объект лучше, чем запихивать в стек кучу нетипизированных данных, и их обработка в вызываемой процедуре.

Чем передача ссылки на структуру лучше передачи объекта? Не понимаю. К тому же мы не решаем проблему изменеия переданных данных.

S> Но понятие дефолтных параметров, если я конечно не ошибаюсь, появилась с Васика как и именованные параметры. Суть в общем таже.


Сильно сомневаюсь.

S> А если рассматривать как передача по значению структуры или отделно взятых параметров то физический смысл один и тот же.


А зачем рассматривать передачу по значению структуры?

S> С Наступающим Новым Годом!!!!


L>>А почему С большая?


L>>P.S. Nothing personal.
... << RSDN@Home 1.1.2 beta 1 >>
Re[12]: Default-параметры в ф-циях на C#
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 26.12.03 16:32
Оценка:
Здравствуйте, Lloyd с Новым Наступающим Годом !!!

L>>>А зачем тогда структура-то? Не понимаю.

Да По Барабану. Хочешь объектк, хочешь структуру по ссылке. Или Есть какая то разница. Вернее она есть, но ....
L>>>>>Да и зачем ссылку? Ты собрался значения через нее что-ли возвращать?

S>> Ну разница есть оссобенно когда структура много.....


L>Что много ...? Ты загадками сегодня лучше не говори, конец недели все-таки. Соображаю туго.


Вот и я думаю, зачем в Win Api в основном по ссылке структуры передают ????
S>>>>Во Во сишники. Как Win Api так ссылки на структуры нормальное явление. Классы ни ни.
S>>>> Только стек и никаких куч.

L>>>Вообще-то, класс и стуктура в сях мало чем отличаются. Обласью видимости по умолчанию только (у класов -- приват, а структур -- паблик). Именно по этому и используют структуры. Чтобы лишний раз public не писать.


Только в WinApi они называются struct. А так у родоначальников надо спросить. Да и Win API это C, а там вроде объектов не было.

S>> А в Net это отличие. Структура в зависимости от объявления может находитсы и в стеке. И согласно скорости ее и надо использовть.


L>А причем тут тогда winapi?

Суть та же.
S>>>>>> Массив параметров вам тоже поможет

L>>>>>Угу. Нам типа плевать на типобезопасность и все такое. Как что-ли?

S>>>> Чья проблема, тот так и реализует.

L>>>Опять не понял. Ты скажи прямо, плевать или нет?

L>>>Если не плевать, то как быть с параметрами разного типа, если плевать, то с вами, пациент, все ясно.
S>> Ну значит разные Consol итд к Вам. Зачем же такой. Применяются налево и на право.

L>Ну во первых Consol вряд ли где примняется. А вот Console -- другое дело.

L>А ты подумай, много ли там изпользуется от передаваемого параметра? ToString да проверка на IFormattable разве только. Если ты согласен этим ограничиться, то welcome.

S>>Ты в какой области Доктор????

S>> ГОВОРЮ ПРЯМО. КОНЕЧНО НЕ ПЛЕВАТЬ. ПО СВОЕЙ СУТИ ПЕРЕДАЧА ССЫЛКИ НА СТРУКТУРУ или Объект лучше, чем запихивать в стек кучу нетипизированных данных, и их обработка в вызываемой процедуре.

L>Чем передача ссылки на структуру лучше передачи объекта? Не понимаю. К тому же мы не решаем проблему изменеия переданных данных.


По большому счету ни чем, просто за объектом GC начинает следить, и при очень большом выделении объектов это сразу заметно.

S>> Но понятие дефолтных параметров, если я конечно не ошибаюсь, появилась с Васика как и именованные параметры. Суть в общем таже.


L>Сильно сомневаюсь.


S>> А если рассматривать как передача по значению структуры или отделно взятых параметров то физический смысл один и тот же.


L>А зачем рассматривать передачу по значению структуры?

А чем передача Default-параметры параметров отличается от передачи структуры по значению????С Наступающим Новым Годом!!!!
и солнце б утром не вставало, когда бы не было меня
Re[7]: Default-параметры в ф-циях на C#
От: Oxy  
Дата: 30.12.03 07:22
Оценка:
Здравствуйте, Ransom Stark, Вы писали:

RS>С точки зрения дальнейшей работы надежнее и понятнее. "Либо так, либо так", вместо "так, но если очень хочется. то эдак"


Странно... Значит Страуструп нелогичный и непоследовательный идиот, а все из M$ мудрецы продвинутые, идиал во плоти так сказать...
Re[8]: Default-параметры в ф-циях на C#
От: Dax  
Дата: 30.12.03 16:47
Оценка:
Здравствуйте, Ransom Stark, Вы писали:

RS>Если обобщить и вернуться к теме — IMHO, параметры по умолчанию — не лучший выбор с точки зрения стиля и дизайна


Согласен, но это абсолютно не выбор для версионинга.
здесь можно глянуть
... << RSDN@Home 1.1.0 stable >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.