理論問題:是做這個有什麼區別:命名空間訪問器比。 「使用」 訪問器
using System;
...
var foo = new String("foo");
這:
var foo = new System.String("foo");
加載DLL?性能差異?
主要是,我的疑問是這種情況下最好的代碼實踐是什麼?
理論問題:是做這個有什麼區別:命名空間訪問器比。 「使用」 訪問器
using System;
...
var foo = new String("foo");
這:
var foo = new System.String("foo");
加載DLL?性能差異?
主要是,我的疑問是這種情況下最好的代碼實踐是什麼?
它對性能或加載沒有影響。
但它可能會影響IDE性能 - 例如,如果您使用using
指令,它將添加IDE必須查找以解決Intellisense的位置。這不是不使用它們的原因,但可能是將它們保持在最低限度的原因,並避免不使用的指令。
作爲一種編碼習慣,如果您在不同名稱空間中具有類似命名的類,則using
指令可能會導致混淆。例如,假設你正在創建一個具有稱爲Tasks的關鍵對象的待辦應用程序,但是你也使用Threading.Tasks來做一些線程化的東西。你不想在那裏使用using
指令。
謝謝!那是我正在尋找的答案 –
不,他們會被編譯成完全相同的IL。
的using
directive(有沒有這樣的術語「命名空間訪問」)是只是告訴C#編譯器試圖解決簡單的名稱完全合格的人時,它應該在該命名空間的一種方式。
(當然兩者實際上將無法編譯,因爲沒有String(String)
構造函數在.NET中,但是這是一個不同的問題。)
注意,使用內置的別名string
等同於使用System.String
型太 - 它真的只是一個別名。例如:
// Just one type!
string x = new String(new char[10]);
同樣的事情。使用任何你喜歡的更多。我使用using
,並在發生名稱衝突時回退到全名。
正如其他人所說,沒有性能優勢。不使用using的一個好處是避免名稱空間模糊。假設您有兩種不同類型的頁面,一種是指您網站上的頁面,另一種是指書中的頁面。它們是具有不同屬性的兩個離散對象。在這種情況下,您必須寫出整個名稱空間,以便能夠區分您所指的是哪種類型的頁面。
如果您不使用「使用」,您必須始終使用完整的限定名稱,包括console.write ... – Doro
使用是很好的代碼練習。所以你不必一直使用全名。我不認爲這裏有任何性能差異,這只是很好的代碼練習。 – Dips