2013-10-21 226 views
0

我是最近轉換PHP開發人員和我一直有使用方法時是找出返回類型的最大問題之一。在PHP中,它自動處理,但在C#中,您需要明確地告訴任何函數它期望返回的類型。我希望有一個簡單的方法可以找到我不知道的信息。對象返回類型

這裏是我工作的一些例子,也許什麼,我試圖做的功能,就像是不可能的,我怎麼想完成它。

假設,使這項工作包括SQL編寫查詢所需的代碼的正確語法和上面休息得當,這不是我的問題很重要。

public DataTypeHere ExampleFunction() 
{ 
myTable = new DataTable(); 
myAdapter = new SqlDataAdapter(); 
myAdapter.SelectCommand = myCommand; 
myAdapter.Fill(myTable); 

return myTable; 
} 

這裏是呼叫:

dataType Variable; 
Variable = ExampleFunction(); 

GridView1.DataSource = Variable.DefaultView; 
GridView1.DataBind(); 

及以下

<form id="form1" runat="server"> 
    <asp:GridView 
     ID="GridView1" 
     runat="server" 
    </asp:GridView> 
</form> 

的HTML所以最終的問題是,什麼類型的變量不myTable的需要歸還的,以在其上使用DataBind()方法?

+0

我強烈建議尋找Entity Framework或其他ORM ,並可能ASP.Net MVC。 'DataTable'等目前並不真正使用。 –

+0

我同意HighCore。傳遞數據表是2003年的,2005年是最好的。這是一個「本土」ORM示例。這本土ORM將是我會做的最少的。 http://stackoverflow.com/questions/13650443/why-is-datatable-faster-than-datareader/15908284#15908284 – granadaCoder

+0

「但是,數據表是如此快速和容易。」 DataTable的維護成本永遠不會得到回報。決不。 – granadaCoder

回答

3

在這種情況下,你返回DataTable

public DataTypeHere ExampleFunction() 
{ 
    myTable = new DataTable(); // <---- You can see the type here 
    myAdapter = new SqlDataAdapter(); 
    myAdapter.SelectCommand = myCommand; 
    myAdapter.Fill(myTable); 

    return myTable; 
} 

此外,我沒有看到你聲明這些變量的地方。這些信息也會在那裏,並且您應該聲明變量儘可能使用最小範圍,如果可能,請使用它們的方法:

public DataTypeHere ExampleFunction() 
{ 
    var myTable = new DataTable(); // <---- You can see the type here 
    var myAdapter = new SqlDataAdapter(); 
    myAdapter.SelectCommand = myCommand; 
    myAdapter.Fill(myTable); 

    return myTable; 
} 
+0

謝謝你的迴應,我的問題是我沒有意識到一個類也可能是一個數據類型。 – bmanhard

+0

@bmanhard ** **所有的數據類型或者是類,結構,枚舉,或委託。 –

4

你返回myTable這與new DataTable()初始化,所以明確的返回類型應該是DataTable

+0

DERP,我是假設它需要是這樣的字符串,整數,對象等,並沒有任何這是工作。這個工作很完美,有時答案比你試圖實現的要簡單得多。 – bmanhard