Кё>class Problem
Кё>{
Кё> static void foo(params object[] ps)
Кё> {
Кё> System.Console.WriteLine("got {0} parameters for great good", ps.Length);
Кё> }
Кё> public static void Main()
Кё> {
Кё> foo(null, null, null, null);
Кё> foo(null, null, null);
Кё> foo(null, null);
Кё> foo(null); // HUH WHAT THE HELL
Кё> foo();
Кё> }
Кё>}
Что лишний раз напоминает о том, что параметры следует проверять на null Чего ужасного-то "params" — это всего лишь атрибут для компилятора. Ничего удивительного.
Help will always be given at Hogwarts to those who ask for it.
Здравствуйте, _FRED_, Вы писали:
_FR>Что лишний раз напоминает о том, что параметры следует проверять на null Чего ужасного-то "params" — это всего лишь атрибут для компилятора. Ничего удивительного.
Здравствуйте, Кодёнок, Вы писали:
_FR>>Ответы специалистов, кстати, в первом же результате поиска Кё>Косяк дизайна языка я считаю. Надо было потребовать писать params, если программист хочет передать все параметры одним массивом:
Кё>object[] x = new object[] { "fred", "he", "is", "not", "null" };
Кё>foo(params x) // ps: x (5 параметров-строк)
Кё>foo(x) // ps: object[] { x } (один параметр-массив)
Ну а ИМХЕ больше кажется подходящим имеющийся вариант, любезно разобранный по косточкам здесь
Искренне желаю тебе однажды купить микроволновку, где одно нажатие выставляет 10 секунд х 900 Вт, два нажатия — включают гриль на два часа, три нажатия — 30 секунд х 900 Вт, четыре — 40, и так далее.
Здравствуйте, Кодёнок, Вы писали:
Кё>Искренне желаю тебе однажды купить микроволновку, где одно нажатие выставляет 10 секунд х 900 Вт, два нажатия — включают гриль на два часа, три нажатия — 30 секунд х 900 Вт, четыре — 40, и так далее.
Нет, не купить, а получить в подарок от жены. На 25 лет свадьбы. Так, чтобы не отвертелся
.
Кё>Искренне желаю тебе однажды купить микроволновку, где одно нажатие выставляет 10 секунд х 900 Вт, два нажатия — включают гриль на два часа, три нажатия — 30 секунд х 900 Вт, четыре — 40, и так далее.
А попробовать объяснить, что в существующем варианте плохо и чем же предложенный вариант лучше не желаете?
Help will always be given at Hogwarts to those who ask for it.
Здравствуйте, _FRED_, Вы писали:
Кё>>Искренне желаю тебе однажды купить микроволновку, где одно нажатие выставляет 10 секунд х 900 Вт, два нажатия — включают гриль на два часа, три нажатия — 30 секунд х 900 Вт, четыре — 40, и так далее.
_FR>А попробовать объяснить, что в существующем варианте плохо и чем же предложенный вариант лучше не желаете?
Я не умею такие вещи объяснять. Что плохого в микроволновке из примера? Просто вижу что плохо, вот и все.
Здравствуйте, Кодёнок, Вы писали:
Кё>>>Искренне желаю тебе однажды купить микроволновку, где одно нажатие выставляет 10 секунд х 900 Вт, два нажатия — включают гриль на два часа, три нажатия — 30 секунд х 900 Вт, четыре — 40, и так далее. _FR>>А попробовать объяснить, что в существующем варианте плохо и чем же предложенный вариант лучше не желаете? Кё>Я не умею такие вещи объяснять. Что плохого в микроволновке из примера? Просто вижу что плохо, вот и все.
На а объяснить что общего у приведённой аналогии и обсуждаемого вопроса можно?
Мне, кстати, нужна микроволновка, у которой не сбрасываются часы при отключении электричества.
Help will always be given at Hogwarts to those who ask for it.
Здравствуйте, Кодёнок, Вы писали:
_FR>>На а объяснить что общего у приведённой аналогии и обсуждаемого вопроса можно?
Кё>Что общего между: Кё>foo() -> ноль слонят Кё>foo(x) -> попугай Кё>foo(x, x) -> два слоненка Кё>foo(x, x, x) -> три слоненка Кё>и Кё>одно нажатие -> один слоненок Кё>два нажатия -> попугай Кё>три нажатия -> три слоненка Кё>четыре нажатия -> четыре слоненка Кё>Это надо объяснять?
Конечно. Потому что далеко не каждый Кё>foo(x) -> попугай
а лишь при стечении некоторых обстоятельств.
using System.Diagnostics;
static class Program
{
static void Main() {
Test();
Test(0); // Никакой не "попугай", не разводите напраслину, учите матчасть
Test(0, 1);
Test(0, 1, 2, 3);
Test(null); // А вот тут очень ясно, что будет происходить
}
static void Test(params int[] values) {
if(values == null) {
Debug.Print("values == null");
} else {
Debug.Print("values.Length == {0}", values.Length);
}//if
}
}
А то, что в некоторых режимах кнопки выполняют не совсем те роли, которые выполняют в привычных условиях — обычное дело.
Help will always be given at Hogwarts to those who ask for it.
Здравствуйте, _FRED_, Вы писали:
_FR>Мне, кстати, нужна микроволновка, у которой не сбрасываются часы при отключении электричества.
Offtop: А зачем часы в микроволновке? Нет часов — нет проблемы.
Здравствуйте, Spiceman, Вы писали:
_FR>>Мне, кстати, нужна микроволновка, у которой не сбрасываются часы при отключении электричества. S>Offtop: А зачем часы в микроволновке? Нет часов — нет проблемы.
У меня на кухне из часов только микроволновка Удобно — пока готовишь, голову не надо вертеть, что бы на часы посмотреть — над головой-то полки да шкафчики, туда часы не повесишь. А лепестричество вырубается днём в рабочие часы не редко
Help will always be given at Hogwarts to those who ask for it.