为什么我们必须使用"使用System.Collections.Generic"等语句。当我们已经使用"使用System"?

时间:2018-03-18 09:13:50

标签: c#

C# code

我是一个新的c#学习者,那个'为什么我有一些最愚蠢的问题!但我想知道我们是否已经使用过"使用System"在我们的应用程序中声明为什么我们需要使用像#34;使用System.Data"这样的语句。或图像中显示的任何其他内容。我们已经导入了主命名空间,那么为什么甚至需要为子命名空间添加使用语句?

2 个答案:

答案 0 :(得分:4)

因为语言规范如此:

C#语言规范部分9.4.2使用命名空间指令:

  

using-namespace-directive导入给定命名空间中包含的类型,但特别是不导入嵌套命名空间

这可能是因为如果导入了每个嵌套的命名空间,那么名称冲突就会太多。这降低了使用$users = User::find()->with('role')->asArray()->all(); 指令的好处。

如果using指令导入了嵌套的命名空间,我可以想到一些名称冲突:

  • usingSystem.Drawing.Path
  • System.IO.PathSystem.Windows.Forms.Button
  • System.Web.UI.WebControls.ButtonSystem.Timers.TimerSystem.Threading.Timer

答案 1 :(得分:-1)

因为using不是命名空间树的递归。 导入System时,只会严格导入System内的定义,而不导入System.Collections内的定义。 这就是你需要指定它们的原因。