位置:首頁 > 軟件操作教程 > 編程開發(fā) > C# > 問題詳情

C# 元組析構(gòu)

提問人:劉團圓發(fā)布時間:2020-12-07

    元組對于從一個函數(shù)中返回多個結(jié)果非常有用。對于沒有必要使用更復(fù)雜的對象,如類、結(jié)構(gòu)或數(shù)組這類情況,使用元組就非常有效。下面是一個有關(guān)元組的簡單示例:

    var numbers = (1, 2, 3, A, 5);

該示例定義了一個返回多個結(jié)果的函數(shù):

private static (int max, int min, double average)

    GetMaxMin (IEnumerable<int> numbers) {...}

通過代碼調(diào)用GetMaxMin()函數(shù)時,返回的結(jié)果必須由代碼解析后才能顯示。如果可以實現(xiàn)元組析構(gòu)(tuple deconstruction),就沒有必要編寫解析結(jié)果的代碼-要實現(xiàn)元組析構(gòu),只需要給支持該特性的任何類添加Deconstruct()函數(shù)即可,如下面的類所示:

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類實現(xiàn)了一個表達式體(expression-bodied)構(gòu)造器,它接受類型為double的兩個變量(latitude和longitude),用于設(shè)置屬性 Latitude 和 Longitude 的值。DeconstructO函數(shù)有兩個out參數(shù): out double latitude 和 out double longitudeo表達式將這兩個out參數(shù)的值分別設(shè)置為初始化Location類時Latitude和Longitude屬性的填充值??赏ㄟ^將元組賦給Location的方法來訪問這兩個字段:

    var location = new Location(48.137154, 11.576124);

    (double latitude, double longitude) = location;

之后,就可以直接引用結(jié)果而不必對結(jié)果進行解析.

繼續(xù)查找其他問題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部