2012-11-04 23 views
1

在vb.net中有一個奇怪的方法,你可以使用函數名作爲結果變量..任何等價於VB.net函數名稱作爲C#中的返回值?

例如:

Function Foo(ByVal bar As Integer) As List(Of Integer) 
    Foo = New List(Of Integer) 
    Foo.Add(bar + 1) 
End Function 

據我所知,在C#中,你必須:

List<int> foo(int bar) 
{ 
    var result = new List<int>(); 
    result.Add(bar + 1); 
    return result; 
} 

我不確定它是由設計還是我只是不知道正確的方法來做到這一點.. 請讓我高興!

在此先感謝, Eitan。

+0

問題是什麼?你可以在VB.net中使用'Return' – Esailija

+0

我在問如何避免在C#中的每個函數中聲明返回變量。 –

回答

0

據我所知,沒有C#等價物。但是,它只是VB中的糖語法,因爲在引擎蓋下方,函數名稱無論如何都被return行爲取代。

使用函數名作爲返回參數的可讀性值得商榷。大多數人不喜歡它。

return還提供了函數名不具有的優點,解決了該特定位置的方法。

+0

是的,我明白了..但我試圖讓我的C#代碼更甜( - –

+1

@ user1179861:如果你想讓你的C#更甜,(或你的VB)不要使用函數名。:) – LightStriker

+0

好的,謝謝大家! –

4

C#不支持。在歷史記錄中,VB支持這一點的唯一原因是以前的(.NET版本)版本僅使用功能名稱分配 - 即沒有Return語句。

還有,你應該使用Return …方法甚至在VB中,而不是使用FunctionName = …Exit Function .NET開發人員之間的一個普遍的共識。


嗯,事實上他們做到了,但它沒有別的東西。

+0

通過以前的版本,一個意味着非.NET版本的Visual Basic(VB6,VBScript和VBA)。 – Oded

+0

@Oded LOL,在我看來,「以前的版本」是堅定的VB6,儘管我們早已將VB7留在了我們身後。將解決。 –