Ключевое слово с нулевым условием, с нулевым объединением, перечисляемое и ключевое слово params ⇐ C#
Ключевое слово с нулевым условием, с нулевым объединением, перечисляемое и ключевое слово params
Я не знал, какое название лучше выбрать для вопроса, так как не знаю, в чем проблема. Рассмотрим следующий небольшой код C#:
static void Main(string[] args) { F1 (ноль); } public static void F1 (значения int[]) { F2(1, значения?[0] как объект?? новый объект[0]); F2(2, значения?.Select(v => (object)v) ?? новый объект[0]); F2(3, значения?.Select(v => (object)v).ToArray() ?? новый объект[0]); } public static void F2 (значения int idx, params object[]) { Console.WriteLine($"count {idx}: '{values?.Count()}'"); } Выводит:
счетчик 1: '1' счет 2: '1' счет 3: '0' Почему первые 2 — 1? Если я использую немедленное окно в Visual Studio, все следующие значения будут иметь значение null:
значения?[0] нулевой значения?.Select(v => (object)v) нулевой значения?.Select(v => (object)v).ToArray() нулевой
Я не знал, какое название лучше выбрать для вопроса, так как не знаю, в чем проблема. Рассмотрим следующий небольшой код C#:
static void Main(string[] args) { F1 (ноль); } public static void F1 (значения int[]) { F2(1, значения?[0] как объект?? новый объект[0]); F2(2, значения?.Select(v => (object)v) ?? новый объект[0]); F2(3, значения?.Select(v => (object)v).ToArray() ?? новый объект[0]); } public static void F2 (значения int idx, params object[]) { Console.WriteLine($"count {idx}: '{values?.Count()}'"); } Выводит:
счетчик 1: '1' счет 2: '1' счет 3: '0' Почему первые 2 — 1? Если я использую немедленное окно в Visual Studio, все следующие значения будут иметь значение null:
значения?[0] нулевой значения?.Select(v => (object)v) нулевой значения?.Select(v => (object)v).ToArray() нулевой
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение