2013-03-13 89 views
-2

返回方法中兩個變量的最簡單方法是什麼?我想返回DataTableInteger如何從一個方法返回一個DataTable和一個Integer?

Private SomeType someMethod() 
{ 
    int x=0; 
    Datatable y; 
    //return x and y 
} 
+6

「最高效」在返回「DataTable」時可能已經是一個爭論點... – 2013-03-13 12:04:53

+0

在一個函數中? – Novice 2013-03-13 12:06:00

+0

在兩個單獨的功能?或作爲自定義對象? – Tim 2013-03-13 12:06:27

回答

5

最終,「最好」是主觀的,取決於你的情況。我們可以提供選項,但「最好」是你本地的。

返回多個值有多種方式; out是非常有效的,但不是很靈活,許多人覺得它很混亂(實際上,有人會說這是一種反模式)。但是,例如:

DataTable Foo(out int val) { 
    ... 
    val = something 
    return dataTable; 
} 

也許更方便是聲明的返回類型封裝兩個值:

FooResult Foo() { 
    ... 
    return new FooResult { Table = dataTable, Value = val }; 
} 

其中FooResult是具有2個屬性的類。這具有的優點是您可以輕鬆地添加更多屬性,而無需更改API。

同樣,你可以返回一個Tuple<DataTable,int> - 但我建議反對它,因爲它對每個值表示什麼都不表示。在Tuple<string,int,string>中,什麼是Item1?與Item3有什麼不同?

+0

出來了,謝謝 – user1590636 2013-03-13 12:12:09

1

忽略問題中「最有效」的部分,因爲它毫無意義。您可以使用一個out-paremeterreturn value

public DataTable GetData(out int integerVariable) 
{ 
    // ... 
    integerVariable = 4711; 
    return table; 
} 

您還可以創建並返回一個自定義類型,其中包括雙方的DataTableint

0

你的函數應該返回一個暴露兩個屬性的對象,其中一個是整數,另一個是DataTable。

+0

你可以創建一個具有所需功能的類。然後你創建這個類的一個實例,調用函數(它甚至可以在構造函數中),函數將結果保存到屬性中並返回。 – Sinatr 2013-03-13 12:32:30

相關問題