竹笋

首页 » 问答 » 环境 » net特性typeof和sizeof
TUhjnbcbe - 2022/8/7 18:01:00
浙江治疗白癜风疗效最好医院 http://pf.39.net/bdfyy/bdfal/160316/4790063.html

做程序设计总是会碰见各种稀奇的需求,比如说动态创建类的实例,使用动态可能是基于降低组件的耦合性的要求,也可能是基于别人的作品进行再创作或进行扩展。考虑到基于别人的作品进行再创作或进行扩展,就要使用到GetType()函数,经过查阅说明文档,发现下面和GetType()相关的内容:

1、sizeof(C#参考)

用于获取非托管类型的大小(以字节为单位)。非托管类型包括下表列出的内置类型以及以下类型:

枚举类型

指针类型

用户定义的结构,不包含任何属于引用类型的字段或属性

2、typeof(C#参考)

用于获取类型的System.Type对象。typeof表达式采用以下形式:

System.Typetype=typeof(int);

若要获取表达式的运行时类型,可以使用.NETFramework方法GetType,如以下示例中所示:

inti=0;

System.Typetype=i.GetType();

不能重载typeof运算符。

3、动态创建类的新实例

TypeBuilder类

在运行时定义并创建类的新实例。

命名空间:System.Reflection.Emit

程序集:mscorlib(在mscorlib.dll中)

语法

C#

[ComVisibleAttribute(true)]

[ClassInterfaceAttribute(ClassInterfaceType.None)]

[HostProtectionAttribute(SecurityAction.LinkDemand,MayLeakOnAbort=true)]

publicsealedclassTypeBuilder:Type,

_TypeBuilder

备注

TypeBuilder是用于控制在运行时创建动态类的根类。TypeBuilder提供了一组用于在运行时的内部定义类、添加方法和字段以及创建类的例程。可以从动态模块创建新的TypeBuilder。

若要为TypeBuilder对象表示的不完整类型创建数组类型、指针类型或byref类型,请分别使用MakeArrayType方法、MakePointerType方法或MakeByRefType方法。

4、动态创建类的新实例

Assembly类

表示一个程序集,它是一个可重用、无版本冲突并且可自我描述的公共语言运行时应用程序构造块。

命名空间:System.Reflection

程序集:mscorlib(在mscorlib.dll中)

语法

C#

[SerializableAttribute]

[ComVisibleAttribute(true)]

[ClassInterfaceAttribute(ClassInterfaceType.None)]

[PermissionSetAttribute(SecurityAction.InheritanceDemand,Unrestricted=true)]

publicabstractclassAssembly:_Assembly,

IEvidenceFactory,ICustomAttributeProvider,ISerializable

备注

使用Assembly类可以加载程序集、浏览程序集的元数据和构成部分、发现程序集中包含的类型以及创建这些类型的实例。

静态方法Assembly.Load方法(String)-通过给定程序集的长格式名称加载程序集。

成员方法Assembly.CreateInstance方法(String,Boolean)-使用可选的区分大小写搜索,从此程序集中查找指定的类型,然后使用系统激活器创建它的实例。

5、附上三篇查到的文章

(98条消息)Unity3D中C#反射Reflection的使用_恬静的小魔龙的博客-CSDN博客_unity反射调用方法

(98条消息)<反射机制Reflection>反射机制创建实例对象类完整结构解析_爱吃糖的范同学的博客-CSDN博客_java反射创建泛型对象实例

(98条消息)使用反射reflection动态创建类实例并操作属性字段和方法_半人马座a星球永久居民的博客-CSDN博客

1
查看完整版本: net特性typeof和sizeof