位置:首页 > 软件操作教程 > 编程开发 > C# > 问题详情

C# 元组析构

提问人:刘团圆发布时间:2020-12-07

    元组对于从一个函数中返回多个结果非常有用。对于没有必要使用更复杂的对象,如类、结构或数组这类情况,使用元组就非常有效。下面是一个有关元组的简单示例:

    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;

之后,就可以直接引用结果而不必对结果进行解析.

继续查找其他问题的答案?

相关视频回答
回复(0)
返回顶部