除了按值和引用,方法参数的第三种传递方式 - Artech
内容提要
.NET规定的参数传递形式有三种:按值传递、按引用传递和TypedReference结构体。按值传递是传递参数的值或拷贝,对于值类型传递字节,对于引用类型传递地址。按引用传递是传递变量所在位置,可以改变原始值。TypedReference是强类型的引用,在按引用传递的基础上传递参数类型。TypedReference结构体有一系列静态方法完成基本操作。还有三个特殊方法:__makeref创建TypedReference对象,__reftype获取引用的目标类型,__refvalue获取和设置引用的值。
关键要点
-
参数传递方式有三种:按值传递、按引用传递和TypedReference结构体。
-
按值传递是传递参数的值或拷贝,值类型传递字节,引用类型传递地址。
-
按引用传递是传递变量所在位置,可以改变原始值。
-
TypedReference是强类型的引用,在按引用传递的基础上传递参数类型。
-
TypedReference结构体有一系列静态方法完成基本操作。
-
三个特殊方法:__makeref创建TypedReference对象,__reftype获取引用的目标类型,__refvalue获取和设置引用的值。
-
TypedReference结构体通过字段_value保持值得引用,并利用_type确定其类型。
-
通过示例演示三种参数传递方式,模拟Typed reference进行参数传递。
延伸问答
.NET支持哪三种参数传递方式?
.NET支持按值传递、按引用传递和TypedReference结构体传递三种方式。
按值传递和按引用传递有什么区别?
按值传递是传递参数的值或拷贝,而按引用传递是传递变量所在的位置,可以改变原始值。
什么是TypedReference结构体?
TypedReference是强类型的引用,在按引用传递的基础上传递参数类型。
TypedReference结构体有哪些特殊方法?
TypedReference结构体有三个特殊方法:__makeref、__reftype和__refvalue。
如何创建一个TypedReference对象?
可以使用__makeref方法创建一个新的TypedReference对象。
在什么情况下使用按引用传递?
按引用传递适用于需要在方法中修改原始值的情况。