Ответ 1
Используя возможности сопоставления с образцом С# 8, вы можете написать это:
if (val is (int id, int name))
{
Console.WriteLine($"id: {id}; name: {name}");
}
Однако это поле id
и name
, что удивительно. Есть предложение по оптимизации этого.
Ниже С# 8 вы можете написать это:
if (val is ValueTuple<int, int> pair)
{
Console.WriteLine($"id: {pair.Item1}; name: {pair.Item2}");
}
Конечно, вы можете сделать это немного яснее:
if (val is ValueTuple<int, int> pair)
{
var (id, name) = pair;
Console.WriteLine($"id: {id}; name: {name}");
}
Похоже, вы также можете деконструировать встроенный ValueTuple:
if (val is ValueTuple<int, int>(var id, var name))
{
Console.WriteLine($"id: {id}; name: {name}");
}
... что несколько ужасно, но кажется законным.
Я мог бы ожидать, что val is (int, int) pair)
будет работать, но, похоже, никто не разработал этот случай (пока).