时间:2021-05-19
值与引用参数之间的区别:
在 C# 中,既可以通过值也可以通过引用传递参数。在调用环境中通过引用传递参数允许函数成员(方法、属性、索引器、运算符和构造函数)更改参数的值,并保持该更改。若要通过引用传递参数,请使用 ref 或 out 关键字。
下面的示例阐释值与引用参数之间的区别:
向方法传递结构和向方法传递类引用之间的区别
下面的示例演示如何使用 结构 到方法与通过 类 实例不同传递给方法。在此示例中,两个参数 (结构和类实例) 将值和两个方法通过更改参数的一个字段的值。但是,这两个方法的结果是不同的,因为的传递,当您通过时结构什么不同通过,则可以通过类的实例。
由于结构是 值类型,那么,当您对方法的 使用结构值 ,方法受到并对结构参数的副本。方法无法访问原始结构中调用方法并不能将其更改任何方式。该方法可以仅更改副本。
类的实例是 引用类型,而不是值类型。当对方法的 引用类型通过值 ,方法进行引用的复制到类实例。即方法受到实例,而不是复制实例的地址的副本。在调用方法的类实例都有一个地址,在调用方法的参数的地址的副本,因此,两个地址是否引用同一对象。由于该参数包含该地址的副本,调用方法不能更改类实例的地址在调用方法的。但是,调用方法可以使用该地址访问原始地址和该副本引用的类成员。如果调用方法将类成员,在调用方法的原始类的实例也会发生更改。
下面的示例的输出显示差异。,因为该方法在参数中使用该地址查找类的实例,的指定字段调用将类实例的 willIChange 字段的值传递给方法 ClassTaker 。调用不更改结构的 willIChange 字段在调用方法为方法 StructTaker ,因为参数的值是结构的副本,而不是复制其地址。 StructTaker 更改该副本,因此,该副本丢失,在向 StructTaker 调用完成时。
输出:
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
C/C++函数参数传递机制详解及实例概要:C/C++的基本参数传递机制有两种:值传递和引用传递,我们分别来看一下这两种的区别。(1)值传递过程中,需在堆栈中开辟
回顾值传递和引用传递关于Java是值传递还是引用传递,网上有不一样的说法。1、基本类型或基本类型的包装类以及String是值传递,引用类型是引用传递。2、Jav
在阅读本文之前,根据自己的经验和理解,大家可以先思考并选择一下Java函数的参数传递方式:A.是按值传递的?B.按引用传递的?C.部分按值部分按引用?此处暂不宣
在C#中,值类型和引用类型是相当重要的两个概念,必须在设计类型的时候就决定类型实例的行为。如果在编写代码时不能理解引用类型和值类型的区别,那么将会给代码带来不必
扩展阅读c#基础系列1---深入理解值类型和引用类型c#基础系列2---深入理解String引言在上篇文章深入理解值类型和引用类型的时候,有的小伙伴就推荐说一说