首页 新闻 会员 周边

typeof(5) typeof(int) 一个报错 一个不报错 有谁能解释解释两者的区别吗

0
[待解决问题]

5 是int类型的

int不是type 类型

int 通过 typeof() 后 就变成Type类型

那他们关系是什么
请问
5 与 int 与 type 到底是个什么关系

~雨落忧伤~的主页 ~雨落忧伤~ | 菜鸟二级 | 园豆:336
提问于:2018-09-29 19:40
< >
分享
所有回答(3)
0

(1)一眼看到这个问题感觉很简单,但是让我说出理由,我却不知如何说起。思考一番,我谈谈我的看法,若有不同意见,还望指正。
(2)楼主你问的5与int与type到底是个什么关系,我可将其翻译为C#中如何确定类型的呢?。C#中有两种类型。一是静态类型,另外一种则是动态类型,静态类型则是指编译时类型,动态类型则是运行时类型。进一步讲编译时类型是什么呢?编译时类型则是在代码中定义的变量,比如你定义一个变量,然后将鼠标放上去此时看到的则是编译时的类型。动态类型又是什么呢?动态类型则是在内存中对象的类型。它的类型可通过GetType()返回。说到底你的这个问题的本质在于了解编译时概念和运行时的概念。
所以说你定义的变量5是静态类型即属于编译时概念,刚才也有讲编译时期编译器它肯定让你知道你定义的变量属于什么类型即typeof(int),因为你将鼠标放上去就是int嘛,而typeof就是获取编译时的类型名称。但是实质上你要获取它的类型即type,这个时候5变量在内存中即属于运行时概念,所以你需要用5.GetType(),所以这个时候编译时类型typeof(int),和获取变量5的运行时类型5.GetType(),二者等价。
(3)以上就是我所知道的,我想我理解的不是很准确,至少给楼主指明了一个方向。这个问题你需要了解编译时类型和运行时类型的概念。其中涉及还有更多,以上只是我浅薄的理解。

Jeffcky | 园豆:2789 (老鸟四级) | 2018-09-29 22:20

5对象实例 具体数据
int 对象实例的定义 抽象定义
它们 都不是 type类型
抽象的定义也有共性 就出现type类型
5 可以通过 gettype 取出 type
int 可以通过 typeof 取出 type

编译时类型是代码中定义变量的类型,, 比如string class类 等等
动态类型则是在内存中对象 (这里的对象应该是指 string int class 这些自定义的类吧 还是值具体的数据 例如5) 的类型

typeof(int) 就是获取编译时的类型名称
5.GetType() 运行时类型名称

支持(0) 反对(0) ~雨落忧伤~ | 园豆:336 (菜鸟二级) | 2018-09-30 10:13
0

````因为typeof是获取一个类型的描述信息.
不是获取一个变量的类型的描述信息.
仅此而已.

吴瑞祥 | 园豆:29449 (高人七级) | 2018-09-30 12:43

嗯嗯

支持(0) 反对(0) ~雨落忧伤~ | 园豆:336 (菜鸟二级) | 2018-09-30 13:55

type类型 的对象是 类型的描述信息.
type a = typeof(string) 类似这样

支持(0) 反对(0) ~雨落忧伤~ | 园豆:336 (菜鸟二级) | 2018-09-30 13:56
0

~雨落忧伤~ 是 属于 人类的;
【type 是描述人类、玩具、动物、植物 等等分类 的 “标准描述”】

人类 不是type 类型

人类 通过 typeof() 后 就变成(被 “标准描述” 阐述成了Type)Type类型

那他们关系是什么
请问
5 与 int 与 type 到底是个什么关系

~雨落忧伤~ 与 人类 与 “标准描述” 你知道是什么关系了吗?

花飘水流兮 | 园豆:13560 (专家六级) | 2018-09-30 13:52

嗯嗯
人类、玩具、动物、植物 等等分类 都属于 类 class

他们的具体对象为 张三 李四 仙人掌 等等这些具体对象

而type类型 是 对 人类、玩具、动物、植物 等这些分类的 标准描述
type类型 的对象 就指 人类、玩具、动物、植物 等这些分类

支持(0) 反对(0) ~雨落忧伤~ | 园豆:336 (菜鸟二级) | 2018-09-30 13:59

@~雨落忧伤~: type类型 的对象 就指 人类、玩具、动物、植物 等这些分类

type类型 的描述参数 就指 人类、玩具、动物、植物 等这些分类

支持(0) 反对(0) 花飘水流兮 | 园豆:13560 (专家六级) | 2018-09-30 14:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册