为什么类似的命名空间类不使用指令共享?

时间:2012-09-18 19:26:48

标签: c# namespaces

在命名空间中添加新类时,这就是我得到的(这是在mvc3项目中)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Foo.Models
{
 public class Bar
 {
 }
}

在命名空间Foo.Models中还有其他类。但是,通过将内容放在不同的.cs位置来分隔内容是很好的。我认为这是相当标准的。我知道编译器无论如何都会发挥其魔力来构建所有这些。这就是我的问题出现的地方。如果稍后组成命名空间,那么为什么总是需要重新定义类正在使用的内容?如果它已经在命名空间中的某个位置可用,那么是否有必要在定义命名空间内的类的每个using System;文件中说.cs?有人可以为我解释一下这一点,并且也许可以通过一种方式来实现这一点,我可以定义命名空间的所有用例,然后添加到该命名空间的任何类本身都可以访问那些。

1 个答案:

答案 0 :(得分:3)

using语句的范围限定为您正在使用的特定.cs文件。

它们只是在该类文件的上下文中提供了一个方便的快捷方式,它允许您仅使用类的名称,而不是在使用它们的任何地方完全限定类名。

存在命名空间,因为不同的团队将不可避免地为不同的类使用相同的类名(我想知道有多少Util类在那里)。

您的项目中可能有两个不同的类要使用具有相同名称的不同对象。能够在每个文件中使用不同的using语句,可以方便地执行此操作。

请注意,您始终可以编辑新类的模板,以预先填充所有类中所需的using语句。