2017-10-16 77 views
-3

簡單的問題。
在我可以使用「陣列」之前。在我的腳本中,我需要以某種方式導入這個函數。這可以通過「使用系統」來完成,但是我明白,導入整個庫是不好的。
那麼,到底什麼庫是陣列的一部分?
(據我所知,這可以通過,如果你知道該怎麼尋找使用Google即時發現,但我已經做了搜索沒有給出結果。)允許在沒有「使用系統」的情況下使用陣列

+0

你在用什麼語言?請添加適當的標籤。 – ImaginaryHuman072889

+1

在我知道的每種語言中,'using'關鍵詞不會「導入」一個庫,它只是擴展了本地名稱空間以允許更簡潔的引用。 –

+0

它是C#。抱歉遲了迴應。 – gelbrekt

回答

2

I have understood that it is bad to import entire libraries like that.

你是不是在這個意義上「進口」一庫鏈接代碼 - 你只是告訴編譯器搜索那個命名空間來解析並命名它在當前命名空間中找不到。無論是否使用using,編譯代碼都沒有區別。這意味着以下是等效的:

using System; 

.... 
    index i = Array.IndexOf(TestList, "Test StringTo Be Found"); 

和:

index i = System.Array.IndexOf(TestList, "Test StringTo Be Found"); 

編譯爲完全相同的IL代碼。所以如果你不能提供using指令,那麼只需在命名空間前加上Array即可。

如果當前名稱空間的類型與system名稱空間中的類型名稱相同,這應該非常罕見(並且在此情況下會得到編譯器警告),唯一的危險是名稱衝突。

你也可以引用數組類作爲System.Array - 在using指令,只是讓你引用Array類沒有前面加上System命名空間。

So, exactly what library is Array a part of?

Array class的在mscorlib.dll程序組件被發現。

+0

我不太明白。你說對於使用「使用系統」的代碼沒有區別。但是如果不使用該行,程序將返回一個錯誤。此外,「使用System.Array」行不起作用。它會返回錯誤:「使用命名空間'指令的A'只能應用於命名空間」 – gelbrekt

+1

'System.Array。IndexOf(TestList,「Test StringTo Be Found」);'@gelbrekt –

+0

是的,謝謝!這工作。但是有沒有辦法縮短這一點,以便只有數組必須被寫入? (比如Python語法「import as」 - 就像「Array System」中的「Use System.Array」一樣)。 – gelbrekt

相關問題