考虑以下代码:
using System;
using System.Collections.Generic;
namespace ConsoleApp1 {
class Program {
private static Dictionary<int, (bool, DateTime)> _dictionary;
public static void SomeMethod(int number) {
if (_dictionary.TryGetValue(number, out (bool isTrue, DateTime timestamp) booltime)) {
Console.WriteLine($"Found it: {booltime.isTrue}, {booltime.timestamp}");
}
else {
Console.WriteLine($"{number} Not Found");
}
}
static void Main(string[] args) {
_dictionary = new Dictionary<int, (bool, DateTime)>();
_dictionary.Add(0, (true, DateTime.Now));
SomeMethod(1);
SomeMethod(0);
}
}
}
它将产生以下输出:
1 Not Found
Found it: True, 6/26/2018 4:56:59 PM
您可以通过在调用参数中定义变量或定义所需类型的单独变量来获取元组作为输出参数。您也可以像这样使用 var 关键字:
if (_dictionary.TryGetValue(number, out var booltime)) {
Console.WriteLine($"Found it: {booltime.Item1}, {booltime.Item2}");
}
请注意,如果您这样做,您将没有命名元组属性,您将不得不使用 Item1 和 Item2。