除了按值和引用,方法参数的第三种传递方式 - Artech

💡 原文中文,约2800字,阅读约需7分钟。
📝

内容提要

.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对象。

在什么情况下使用按引用传递?

按引用传递适用于需要在方法中修改原始值的情况。

➡️

继续阅读