咨询C#类与结构体中点符号的含义:以JsonElement.ArrayEnumerator为例
关于C#中类型名称里点符号的说明
你看到的JsonElement.ArrayEnumerator、Dictionary<TKey,TValue>.ValueCollection这类写法,本质是嵌套类型的引用方式,和命名空间无关,C#也不允许在类/结构体的名称里直接使用点符号,具体解释如下:
- 嵌套类型的定义:这类带点的类型,是直接在外部类型(比如
JsonElement结构体、Dictionary<TKey,TValue>泛型类)内部定义的类型。比如ArrayEnumerator是JsonElement内部的枚举器类,ValueCollection是Dictionary<TKey,TValue>内部的集合类。 - 嵌套类型的作用:把关联紧密的类型逻辑封装在外部类型内部,既可以让嵌套类型访问外部类型的私有成员,也能避免全局命名空间被过多零散类型占用,让代码结构更清晰。
- 和命名空间的区别:命名空间的点(比如
System.Text.Json.JsonElement)是用来划分代码的层次结构,而嵌套类型的点是明确表示“该类型属于某个外部类型的内部成员”,访问时必须通过外部类型名来引用。 - 额外说明:C#的类型名称本身不能包含点符号,你看到的所有点要么是命名空间层次的分隔,要么是嵌套类型的归属标记,绝非类型名的一部分。
内容的提问来源于stack exchange,提问作者Karl Gardner
相关产品推荐
相关产品推荐

