@michadimin

Как реализовать одновременное присваивание и ввод чисел через пробел?

Немного деталей: со Split, ToArray и прочими - я знаком.

Меня интересует конкретный момент: как реализовать одновременное присваивание и ввод чисел через пробел?

В Python, например, можно сделать вот так:
a, b = map(int, input().split((" ")))

Как сделать что-то подобное, но на C#?
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
WNeZRoS
@WNeZRoS
Можно сделать так же как в Python:
var (a, b) = Console.ReadLine().Split(" ").Select(int.Parse);


но надо добавить метод деконструкции IEnumerable на 2 элемента:
public static class DeconstructEnumerable
{
	public static void Deconstruct<T>(this System.Collections.Generic.IEnumerable<T> enumerable, out T item1, out T item2)
	{
		using var enumerator = enumerable.GetEnumerator();
		if (!enumerator.MoveNext())
			throw new ArgumentException("not enough values to unpack (expected 2, got 0)", nameof(enumerable));
										
		item1 = enumerator.Current;
										
		if (!enumerator.MoveNext())
			throw new ArgumentException("not enough values to unpack (expected 2, got 1)", nameof(enumerable));
		
		item2 = enumerator.Current;
		
		if (enumerator.MoveNext())
			throw new ArgumentException("too many values to unpack (expected 2)", nameof(enumerable));
	}
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы