2012-09-18 101 views
0

当添加一个新类到一个命名空间,这是我所得到的(这是在MVC3项目)为什么类似的名称空间类不使用指令共享?

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

namespace Foo.Models 
{ 
public class Bar 
{ 
} 
} 

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

回答

3

using语句被限定在特定的.cs文件,你正在使用。

他们只是提供该类文件,允许您使用的类的名称而已,而不是到处都使用它们完全限定类名称的情况下方便快捷。

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

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

请注意,您可以随时编辑该模板的新类预填充你所有的类都需要的using声明。

+0

实际上它们的作用域是命名空间,文件的行为像一个特殊的命名空间(global::) –

+0

可伸缩性,好点:) –

+0

@HenkHolterman:帮我理解你的评论。如果我在.cs文件的顶部使用* using *语句,那么* using *语句将影响该文件的类名解析。我不遵循你所说的话。 –

相关问题