【技术】C#入门:typeof()和GetType()的区别
2017-02-23 17:36
246 查看
转自 http://www.cnblogs.com/ysh2012/archive/2012/12/17/2821326.html
相同点:两者返回的都是 System.Type
区别TypeOf是一个运算符,只能针对类型进行运算。
GetType是一个集成自Object的方法,任何一个object的变量都可以调用。
以下来自msdn:
C#
typeof 运算符(在 Visual Basic 中为
GetType 运算符,在 Visual C++ 中为 typeid 运算符)返回一个
Type 对象。
表示某个类型是唯一的
Type 对象;即,两个 Type 对象引用当且仅当它们表示相同的类型时,才引用相同的对象。 这允许使用参考等式来比较
Type 对象。
这个类是线程安全的;多个线程可以同时从此类型的一个实例读取数据。Type 的实例可表示以下任何类型:
类
值类型
数组
Interfaces
指针
枚举
构造泛型类型和泛型类型定义
构造泛型类型、泛型类型定义和泛型方法定义的类型实参和类型形参
可以通过下列方式获得对与某个类型关联的
Type 对象的引用:
Object
..::.GetType 方法返回表示实例类型的 Type 对象。
静态 GetType 方法返回 Type 对象,该对象表示由其完全限定名指定的类型。
Module
..::.GetTypes 、
Module ..::.GetType 和
Module ..::.FindTypes 方法返回 Type 对象,这些对象表示在某个模块中定义的类型。 第一个方法可用于获得模块中定义的所有公共类型和私有类型的 Type 对象的数组。 (可以通过
Assembly ..::.GetModule 或
Assembly ..::.GetModules 方法,或通过
Type ..::.Module 属性获得 Module 的实例。)
FindInterfaces
方法返回某个类型所支持的接口类型的筛选后的列表。
GetElementType
方法返回表示元素的 Type 对象。
GetInterfaces
和
GetInterface 方法返回表示某个类型所支持的接口类型的 Type 对象。
GetTypeArray
方法返回表示任意一组对象所指定的类型的 Type 对象数组。 这些对象用 Object 类型的数组指定。
GetTypeFromProgID
和
GetTypeFromCLSID 方法是为 COM 互操作而提供的。 这些方法返回表示 ProgID 或 CLSID 所指定的类型的 Type 对象。
GetTypeFromHandle
方法是为交互操作而提供的。 此方法返回表示类句柄所指定的类型的 Type 对象。
C# typeof 运算符、C++ typeid 运算符和 Visual Basic GetType 运算符获得某个类型的 Type 对象。
MakeGenericType
方法返回 Type 对象,该对象表示构造泛型类型,如果该对象的
ContainsGenericParameters 属性返回 true,则该类型为开放构造类型,否则为封闭构造类型。 只能实例化封闭的泛型类型。
MakeArrayType、
MakePointerType 和
MakeByRefType 方法返回 Type 对象,这些对象分别表示指定类型的数组、指向指定类型的指针以及引用参数的类型(在 C# 中为 ref,在 Visual Basic 中为 ByRef)。
相同点:两者返回的都是 System.Type
区别TypeOf是一个运算符,只能针对类型进行运算。
GetType是一个集成自Object的方法,任何一个object的变量都可以调用。
以下来自msdn:
C#
typeof 运算符(在 Visual Basic 中为
GetType 运算符,在 Visual C++ 中为 typeid 运算符)返回一个
Type 对象。
表示某个类型是唯一的
Type 对象;即,两个 Type 对象引用当且仅当它们表示相同的类型时,才引用相同的对象。 这允许使用参考等式来比较
Type 对象。
这个类是线程安全的;多个线程可以同时从此类型的一个实例读取数据。Type 的实例可表示以下任何类型:
类
值类型
数组
Interfaces
指针
枚举
构造泛型类型和泛型类型定义
构造泛型类型、泛型类型定义和泛型方法定义的类型实参和类型形参
可以通过下列方式获得对与某个类型关联的
Type 对象的引用:
Object
..::.GetType 方法返回表示实例类型的 Type 对象。
静态 GetType 方法返回 Type 对象,该对象表示由其完全限定名指定的类型。
Module
..::.GetTypes 、
Module ..::.GetType 和
Module ..::.FindTypes 方法返回 Type 对象,这些对象表示在某个模块中定义的类型。 第一个方法可用于获得模块中定义的所有公共类型和私有类型的 Type 对象的数组。 (可以通过
Assembly ..::.GetModule 或
Assembly ..::.GetModules 方法,或通过
Type ..::.Module 属性获得 Module 的实例。)
FindInterfaces
方法返回某个类型所支持的接口类型的筛选后的列表。
GetElementType
方法返回表示元素的 Type 对象。
GetInterfaces
和
GetInterface 方法返回表示某个类型所支持的接口类型的 Type 对象。
GetTypeArray
方法返回表示任意一组对象所指定的类型的 Type 对象数组。 这些对象用 Object 类型的数组指定。
GetTypeFromProgID
和
GetTypeFromCLSID 方法是为 COM 互操作而提供的。 这些方法返回表示 ProgID 或 CLSID 所指定的类型的 Type 对象。
GetTypeFromHandle
方法是为交互操作而提供的。 此方法返回表示类句柄所指定的类型的 Type 对象。
C# typeof 运算符、C++ typeid 运算符和 Visual Basic GetType 运算符获得某个类型的 Type 对象。
MakeGenericType
方法返回 Type 对象,该对象表示构造泛型类型,如果该对象的
ContainsGenericParameters 属性返回 true,则该类型为开放构造类型,否则为封闭构造类型。 只能实例化封闭的泛型类型。
MakeArrayType、
MakePointerType 和
MakeByRefType 方法返回 Type 对象,这些对象分别表示指定类型的数组、指向指定类型的指针以及引用参数的类型(在 C# 中为 ref,在 Visual Basic 中为 ByRef)。
} |
相关文章推荐
- C# typeof 和 GetType区别
- c#种GetType()和TypeOf()的区别
- C#中的typeof()和GetType()的区别
- C#中的typeof()和GetType()的区别
- C#中typeof 与GetType()的区别
- C#新手入门代码 gettype()与gettypecode()的区别
- C# typeof 和 GetType区别
- C# typeof() 和 GetType()区别
- C# TypeOf 和GetType的区别
- C#中typeof 与GetType()的区别和methodinfo、memberinfo反射
- C# typeof() 和 GetType()区别
- C# typeof() 和 GetType() 的区别
- c# typeof() 和 GetType()的区别
- C# GetType()与Typeof()的区别
- C# typeof() 和 GetType()区别
- C# GetType和typeof的区别
- C# typeof() 和 GetType()区别
- C# GetType和typeof的区别
- c#中GetType()与Typeof()的区别
- C# GetType和typeof()的区别