Обычно в Python 2/3 мы можем использовать следующий код для разделения двух целых чисел, разделенных пробелами на две переменные:
a,b = map(int,input().split())
Есть ли короткий эквивалент С#? (т.е. ничего, как показано ниже)
string[] template = Console.ReadLine().Split();
a = Convert.ToInt32(template[0]);
b = Convert.ToInt32(template[1]);
Вы можете попробовать следующее:
var result = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
Тем не менее, приведенный выше код будет вылетать, если вход не действует.
Более отказоустойчивый подход будет следующим:
var result = Console.ReadLine()
.Split(' ')
.Select(input =>
{
int? output = null;
if(int.TryParse(input, out var parsed))
{
output = parsed;
}
return output;
})
.Where(x => x != null)
.Select(x=>x.Value)
.ToArray();
s => int.TryParse(s, out var i) ? i : default
Он называется Select()
. Вам нужно импортировать Linq:
using System.Linq;
Затем вы можете использовать его подобно карте. Имейте в виду, что это функция расширения и не является точным эквивалентом.
var integers = Console.ReadLine().Split().Select(s => Convert.ToInt32(s)).ToArray();
var a = integers[0];
var b = integers[1];
В этом примере отсутствует правильная обработка ошибок.
редактировать
ToArray()
Convert.ToInt32
Split(' ')
, чтобы определить символ разделения. И C # не был предназначен для разделения значений таким образом, но теперь это возможно, но я бы воздержался от этого «упрощения»