.net有点混乱 System.Collections.Generic 系统是一个名称空间,集合是该名称空间中的一个项目,泛型是集合项目中的一个类。 所以列表,数组,队列...都在泛型内部。如何将一个类放在另一个类中。
答案 0 :(得分:3)
System.Collections.Generic
是一个名称空间。不是课程。
System.Collections
是一个命名空间。
System
是一个命名空间。
这些都与项目无关。它们可能都在同一个项目中,也可能都在单独的项目中。一个名称空间甚至可以包含来自许多不同项目的代码。
在Visual Studio中创建新项目时,说“ Assembly1”,新项目的默认根名称空间也将是Assembly1
。但是,不需要两者相同:您可以将项目重命名为MyNewAssembly,名称空间名称不会更改。如果另一个项目链接到MyNewAssembly.dll,则程序集中的类型仍将在Assembly1
命名空间中找到。
这些都不是类。但是,您可以在另一个类中有一个类。我们通常将其称为nested classees。
答案 1 :(得分:1)
C# standard表示名称空间是用namespace
关键字声明的,其后是名称空间的名称,主体,以及可选的后跟分号。
来自标准页面:
namespace_declaration
: 'namespace' qualified_identifier namespace_body ';'?
;
qualified_identifier
: identifier ('.' identifier)*
;
namespace_body
: '{' extern_alias_directive* using_directive* namespace_member_declaration* '}'
;
namespace_declaration的qualified_identifier可以是单个 标识符或以“。”分隔的标识符序列。令牌。的 后一种形式允许程序定义嵌套名称空间而无需 在词汇上嵌套几个命名空间声明。例如,
namespace N1.N2
{
class A {}
class B {}
}
这在语义上等同于以下内容:
namespace N1
{
namespace N2
{
class A {}
class B {}
}
}
出于所有意图和目的,您几乎可以忽略所有这些,而只是将System.Collections.Generic视为List<> class“生存”的名称空间。
如果您好奇,请查看source code for Systems.Collections。您可以在第292行找到List <>类的实现。如您在第43行所见,它是在System.Collections.Generic
名称空间中声明的。