2014-02-20 73 views
-3

有沒有人可以通過考慮執行時間,效率等所有因素來提供差異電話號碼在VB.NET和C#中編寫代碼有什麼區別?

哪個有效?

+0

其2種使用相同的框架不同的語言! –

+0

反對票的原因是什麼?我希望它對於優秀的思想家和研究人員來說是個好問題。即使我在面試中遇到了這個問題。 –

+1

我還沒有downvote無論如何..但我同意你,downvoters應該給理由! –

回答

0

應該沒有,因爲它們都編譯爲相同的語言。最大的變量因素是程序員 - 他們可能以更迂迴或效率低下的方式來做事情(例如,我可以想象,來自VB(A)背景的VB.NET程序員傾向於從來自C(++)背景)。

如果你想確定,拿一段代碼並檢查IL。

3

VB.NET是一種「友好」的編程語言。它支持動態編程,無需顯式輸入變量。數據轉換是自動的。溢出檢查默認爲開啓。通過引用傳遞屬性只是起作用。您可以將一個int分配給一個字節而不用強制轉換。您可以創建一個多窗口的Winforms應用程序,而無需真正理解面向對象的編程。編譯器會自動生成一堆代碼。

沒有一個是免費的。在某些情況下,額外的開銷可能非常大。簡單地添加兩個數字可能比需要的價格高出三倍,溢出檢查非常麻煩。字符串和數字之間的自動轉換是VB.NET程序中的一個頻繁的瑕疵,非常昂貴。你只是看着源代碼就沒有多少機會來識別這樣的瓶頸。

C#更嚴格,它(幾乎)永遠不會生成隱藏地板墊下執行成本的代碼。因此它可以自動更容易地編寫高性能代碼。這不會完全避免使用輪廓儀來識別瓶頸。

1

我想擴展到目前爲止給出的兩個答案。他們都是正確的。 VB.NET的問題通常是開發人員的思維和VB.NET語言的靈活性。

如果使用Option Explicit On,Option Strict On(Option Strict On啓用Option Explicit)並且不使用Option Infer,您將得到更好的結果,代價是更復雜的代碼。複雜的我的意思是你必須正確地轉換你的變量和對象,這對於BASIC開發者來說可能被認爲是複雜的。

選項嚴格的信息:http://support.microsoft.com/kb/311329

選項推斷上,不應該編寫新應用程序時使用的99.99%的時間。我會說100%的時間,但有人會有一個合法的理由,我只是想不出任何。

選項推斷信息:http://msdn.microsoft.com/en-us/library/bb384665.aspx

相關問題