首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套类.GetType()

嵌套类.GetType()
EN

Stack Overflow用户
提问于 2012-02-02 18:29:46
回答 2查看 838关注 0票数 7

在处理嵌套类并将类型的名称输出到控制台窗口时,我注意到了一些奇怪的事情。我想知道是否有人能给我解释一下。在主类上调用GetType()时,它会返回我所期望的结果,即相关名称空间后面的类名。即Namespace.Namespace.Classname

但是,当我从封闭类中调用一个函数来返回嵌套类的类型时,我得到的返回值如下:

代码语言:javascript
复制
Namespace.Namespace.ClassNameEnclosing + ClassNameNested.

为什么不简单地以点符号的形式返回。为什么要加+符号?我只是好奇在背景中发生了什么,导致了这个符号。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-02 18:32:08

点用于表示名称空间。嵌套的类仍然在同一个名称空间中,只是嵌套在一个类中。

我不能马上断定(通过对ECMA-335的简单研究)包含一个点的非限定类型名称在IL中是否真的有效;我怀疑它是有效的,但它会使所有类型的诊断更难阅读。

票数 5
EN

Stack Overflow用户

发布于 2012-02-02 18:34:39

反射不是特定于语言的。

点符号(Namespace.Namespace.OuterClassName.InnerClassName)是特定于C#的。反射必须适用于您可以用来编译为IL的每种语言。此外,在反射时,如果不检查Type类的其他属性,如何确定OuterClassName不只是名称空间的另一部分?

你会问为什么它不能简单地返回为点符号呢?您可能会问“为什么不简单地返回为IronPython表示法”、IronLisp表示法、L#表示法、BOo表示法,或者……

学习反射中使用的符号,您可以使用它来分析用任何语言编写的代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9110744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档