在C#中是typeof函数吗?

时间:2016-12-10 17:41:18

标签: c#

正如你所看到的,它接收一个类名作为它的param并返回类的类型。那为什么它不是一个函数?

code

2 个答案:

答案 0 :(得分:6)

typeof是运算符,由编译器处理。说到运行时,typeof未被调用,因此它不是函数。

在代码中出现typeof(T)的地方,编译器会提供对Type类型构建的T对象的引用。

代码中的每个类型都有一个可以获取的关联Type对象。有两种方法可以获取Type个对象:Object.GetType()实例级方法和typeof运算符。

答案 1 :(得分:2)

只是为了补充Zoran的回答:

从语言语法的角度来看,typeof不能作为函数实现,因为它的参数是类型名称作为一个单词

C#不允许您将类型名称作为参数传递。因此,typeof(string)不必使用typeof("System.String, mscorlib")来调用类似Type.GetType的内容,因为nameof函数正是这样做的,因此会破坏运算符的用途。

mySessionVariable有完全相同的问题。