C# 允许使用不带“的数组”;“使用系统”;

C# 允许使用不带“的数组”;“使用系统”;,c#,arrays,C#,Arrays,简单的问题。 在我的脚本中,我需要以某种方式导入这个函数。这可以通过“使用system;”完成,但我知道这样导入整个库是不好的。 那么,数组究竟是哪个库的一部分呢 (我知道,如果你知道要搜索什么,可以通过谷歌搜索立即找到,但我所做的搜索没有结果。) 我知道这样导入整个库是不好的 从链接代码的意义上讲,您并不是在“导入”库,而是告诉编译器搜索要解析的名称空间以及在当前名称空间中找不到的名称。无论是否使用using,编译后的代码都没有区别。这意味着以下各项是等效的: using System; .

简单的问题。
在我的脚本中,我需要以某种方式导入这个函数。这可以通过“使用system;”完成,但我知道这样导入整个库是不好的。
那么,数组究竟是哪个库的一部分呢
(我知道,如果你知道要搜索什么,可以通过谷歌搜索立即找到,但我所做的搜索没有结果。)

我知道这样导入整个库是不好的

从链接代码的意义上讲,您并不是在“导入”库,而是告诉编译器搜索要解析的名称空间以及在当前名称空间中找不到的名称。无论是否使用
using
,编译后的代码都没有区别。这意味着以下各项是等效的:

using System;

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

编译为完全相同的IL代码。因此,如果不能使用指令提供
,那么只需在
数组
前面加上名称空间即可

如果当前名称空间中的类型与
系统
名称空间中的类型同名,那么唯一的危险就是名称冲突,这应该是非常罕见的(在这种情况下,您会收到编译器警告)

您还可以将数组类引用为
System.array
——使用
指令只允许您引用
array
类,而无需在
System
名称空间前加前缀

那么,数组究竟是哪个库的一部分呢


可以在mscorlib.dll程序集中找到

你用什么语言?请添加适当的标记。在我所知道的每种语言中,
using
关键字并没有“导入”库,它只是扩展了本地名称空间以允许更简洁的引用。它是C。抱歉,响应太晚。使用
指令的
不会“导入整个库”。它只是提供了一个名称空间(
系统
名称空间)。你希望从中得到什么具体的负面影响?什么剧本?什么代码?举个例子。在大多数情况下,您甚至不需要直接使用Array类@gelbrekt@gelbrekt您是说您不能使用
使用
,因为您正在命名空间之外的某个地方插入代码?如果是这样,则必须提供名称空间。请参阅我的编辑,了解我所说的“没有区别”的含义@gelbrekt@gelbrekt在C#中,与Java不同,使用名称空间并不包括其所有子名称空间。当您“使用”名称空间时,您只使用该名称空间。因此,您关于“使用System.Collections”和“使用System.Collections.Generic”可以替换为“使用System”的断言是错误的<代码>使用
仅是编译时构造。它在编译的代码中没有区别,因此不会对性能产生任何影响。@gelbrekt From:“使用
指令的
不允许您访问嵌套在指定名称空间中的任何名称空间。”我怀疑要么您没有在这些名称空间中使用任何类型,要么Unity正在做一些使它们变得不必要的事情。
    index i = System.Array.IndexOf(TestList, "Test StringTo Be Found");