C# 元组析构
元组对于从一个函数中返回多个结果非常有用。对于没有必要使用更复杂的对象,如类、结构或数组这类情况,使用元组就非常有效。下面是一个有关元组的简单示例:
var numbers = (1, 2, 3, A, 5);
该示例定义了一个返回多个结果的函数:
private static (int max, int min, double average)
GetMaxMin (IEnumerable<int> numbers) {...}
通过代码调用GetMaxMin()函数时,返回的结果必须由代码解析后才能显示。如果可以实现元组析构(tuple deconstruction),就没有必要编写解析结果的代码-要实现元组析构,只需要给支持该特性的任何类添加Deconstruct()函数即可,如下面的类所示:
public class Location
{
public Location(double latitude, double longitude)
=> (Latitude, Longitude) = (latitude, longitude);
public double Latitude { get; }
public double Longitude { get; }
public void Deconstruct(out double latitude, out double longitude)
=> (latitude, longitude) = (Latitude, Longitude);
}
Location类实现了一个表达式体(expression-bodied)构造器,它接受类型为double的两个变量(latitude和longitude),用于设置属性 Latitude 和 Longitude 的值。DeconstructO函数有两个out参数: out double latitude 和 out double longitudeo表达式将这两个out参数的值分别设置为初始化Location类时Latitude和Longitude属性的填充值。可通过将元组赋给Location的方法来访问这两个字段:
var location = new Location(48.137154, 11.576124);
(double latitude, double longitude) = location;
之后,就可以直接引用结果而不必对结果进行解析.
点击加载更多评论>>