引用传递问题
来源:互联网 发布:北京大数据公司 编辑:程序博客网 时间:2024/05/06 07:16
using System;public class Test1{ public static void Main() { int num = 0; Person p = new Person("Li"); A1(p, num); Console.WriteLine("{0},{1}", p.name, num); } static void A1(Person p, int num) { p = new Person("Wang"); num = 1; }}public class Person{ public string name; public Person(string name) { this.name = name; }}
其实这两个参数都是值传递,num就不用说了,它是值类型,所以传递到方法中的是它的副本,而p是引用类型,但是它没有加ref或者out,所以它是以值传递引用类型,引用类型的变量不直接包含其数据;它包含的是对其数据的引用。当通过值传递引用类型的参数时,有可能更改引用所指向的数据,如某类成员的值。但是无法更改引用本身的值;也就是说,不能使用相同的引用为新类分配内存并使之在块外保持。
在楼主的示例中,p为引用类型,在未使用 ref 参数的情况下传递给方法A1。在此情况下,将向方法传递指向p的引用的一个副本。但是在A1方法中使用 new 运算符来分配新的内存部分,将使A1中的p引用新的Person,因此,这之后的任何更改都不会影响原始Person p(它是在 Main 内创建的)。实际上,本示例中创建了两个Person对象,一个在 Main 内,一个在 A1 方法内- 引用传递问题
- JAVA引用传递问题
- JAVA引用传递问题
- Java中值传递和引用传递问题
- js值传递和引用传递问题
- js函数传参是值传递引用传递问题
- python 引用传递所致问题
- Java引用传递问题示例
- java 引用传递小问题
- javascript中值传递,地址传递,引用传递的问题。
- JAVA中的别名问题,引用传递
- java值 与引用的传递问题
- 安卓中碰到的JAVA引用传递问题
- C++按引用传递参数的问题
- 递归函数使用引用传递的问题
- java的值传递和引用传递问题
- .net中引用传递对象作为参数传递的问题
- Java值传递和引用传递的问题
- 开源框架Core Plot的使用
- 开源云计算技术应用
- epoll使用详解
- topas命令解析
- IEnumerable和IEnumerator的使用
- 引用传递问题
- 用VS2008写MFC时遇到的问题汇总
- org.hibernate.TransientObjectException: object references an unsaved t...
- C# winForm 发送邮件SMTP
- 简单的登录过滤器
- DWR学习
- ATM自助终端及后台管理系统(课程设计)
- Zend Framework教程-Bootstrap
- [Rqnoj-199]门票系统