在研究反编译的 C# 7 库时,可能会遇到 ValueTuple 泛型的使用。了解 ValueTuples 的用途及其相对于传统元组的优势至关重要。
主要区别:
ValueTuples 的基本原理:
ValueTuples 简介在 C# 7 中,是出于性能考虑:
示例:
演示的用法和好处ValueTuples:
public (int sum, int count) DoStuff(IEnumerable<int> values) { var res = (sum: 0, count: 0); foreach (var value in values) { res.sum += value; res.count++; } return res; }
使用分解:
var result = DoStuff(Enumerable.Range(0, 10)); Console.WriteLine($"Sum: {result.sum}, Count: {result.count}");
或使用新变量:
ValueTuple<int, int> valueTuple = DoStuff(Enumerable.Range(0, 10)); Console.WriteLine(string.Format("Sum: {0}, Count: {1})", valueTuple.Item1, valueTuple.Item2));
编译器实现:
编译器生成在内部利用 ValueTuple 字段的代码,同时提供命名参数访问以便直观使用。
结论:
ValueTuples 由于其值类型性质、可变性和语法糖而比传统元组具有显着的性能和便利性优势.
以上是C# 中的 ValueTuple 与 Tuple:主要性能和设计差异是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!