C# 從一個方法返回多個數據項


在許多情況下,從一個方法返回一個值是不夠的。需要使用一種方式來返回不止一個數據項。

使用 ref 或者 out 關鍵字

在方法的簽名中使用out關鍵字創建一個參數,指示這個參數由該方法初始化並返回。需要返回多個值時,這個技巧很有用。一個方法只有一個返回值,但通過使用out關鍵字,可以把多個參數標記為返回值。
out參數使用方法如下所示:

public void ExampleOut(int input, out int output1, out int output2)
{
    output1 = input *= input;
    output2 = input -= 4;
}

out標記的參數不需要初始化,只需要傳入ExampleOut方法中即可。

int output1;
int output2;
obj.ExampleOut(10,out output1,out output2);

ref使用方法和 out 類似,不同之處是 ref 參數傳入方法時必須先初始化。

使用結構體

定義結構體 Output

public struct Output
{
    public int output1;
    public int output2;
}

使方法返回結構體

public Output ExampleStruct(int input)
{
    Output objOutput = new Output();
    objOutput.output1 = input *= input;
    objOutput.output2 = input -= 4;
    
    return objOutput
}

使用Tuple對象包含所有返回值

組元(Tuple)是C# 4.0引入的一個新特性,可以在.NET Framework 4.0或更高版本中使用。組元使用泛型來簡化類的定義,多用於方法的返回值。在函數需要返回多個類型的時候,就不必使用out , ref等關鍵字了,直接定義一個Tuple類型,使用起來非常方便。

public Tuple<int, int,int,int,int,string> ReturnDimensionAsTuple(int inputShape)
{
    var objDim = Tuple.Create<int, int, int, int, int, string>(5, 20, 15, 25, 30, "777");
    return objDim;
}
Tips

Tuple 中保存的的數據是不可變的,一旦通過構造函數或者靜態的Create方法將數據添加到Tuple中,就無法再修改這些數據了。
Tuple 可以接受並包含 8 個獨立的值。如果你需要 8 個以上的值,就需要使用這個特別的 Tuple 類。

Tuple<T1, T2, T3, T4, T5, T6, T7, TRest> Class

當創建一個包含超過8個值的Tuple時,無法使用Tuple的Create方法,而是使用Tuple類的構造函數。下面的代碼創建了包含10個int的Tuple.

var values = new Tuple<int, int, int, int, int, int, int, Tuple<int, int, int>> (1, 2, 3, 4, 5, 6, 7, new Tuple<int, int, int> (8, 9, 10));

Tuple中可以加入任意類型的數據,如下所示:

var values = Tuple.Create<int,string,object,byte>(12, "元組", new object(), 0x23);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM