string s = "1"; //内存堆中的一块空间,地址1
Object o = s; //内存堆中一块新空间地址2,存放一个指针指向地址1
Object o1 = o; //内存中一块新空间地址3,存放一个指针,指向地址2
o = "2"; //内存中一块新空间地址4,目前没有其他指针指向这个地址按如上理解对吗?按以上o1应该还等于"1",其实我希望如下在内存堆中有一个字符串"aaa",然后在内存堆中开辟一个新空间,指向"aaa"这个空间,我希望当"aaa"改变为"bbb"时,新空间显示的值也会改变为"bbb",类似于指针,应该如何操作,
Object o = s; //内存堆中一块新空间地址2,存放一个指针指向地址1
Object o1 = o; //内存中一块新空间地址3,存放一个指针,指向地址2
o = "2"; //内存中一块新空间地址4,目前没有其他指针指向这个地址按如上理解对吗?按以上o1应该还等于"1",其实我希望如下在内存堆中有一个字符串"aaa",然后在内存堆中开辟一个新空间,指向"aaa"这个空间,我希望当"aaa"改变为"bbb"时,新空间显示的值也会改变为"bbb",类似于指针,应该如何操作,
解决方案 »
- CSDN生成的静态页面,有些回复登陆后才能看到,是如何做到的?
- 求助!! document.getElementById(...) 为空或不是对象
- asp.net 初学者
- 在服务器控件的Text属性里添加html代码,急,在线等!
- 大家帮帮忙,怎样使FileUpload控件按钮上显示英文,而不是浏览二字
- ?从数据库中读取的汉字为什么是乱码!
- 一面試題,我認為有更好的方法!請各位看看~!來者有分~!幫我進步~!
- 怎么使用不同文件夹下的类
- 请问高手:如何利用ASP.NET做一个容器控件
- 急手问题.!!!
- 请大家指点一下,弹出对话框事件
- 请解释如下代码为什么不能通过,onclick和onserverclick
如果你要实现副本改变原值的情况,要使用引用类型!C#分为值类型和引用类型,引用类型可以做到这个效果!
楼主查下管理方法传递参数的类型
有值类型和引用类型之分值类型不改变原来的值
引用类型执行方法之后原来的值要跟着改变
我希望当"aaa"改变为"bbb"时,新空间显示的值也会改变为"bbb"========传递参数是用 ref / out 关键字void RefParamSampleFoo(ref string str) {
str += "hello";
}
此语句的结果是在堆栈上创建对象引用 o,而在堆上则引用 int 类型的值。该值是赋给变量 i 的值类型值的一个副本。
所以o并没有指向i的原值,而是指向了i的副本,所以对其进行操作无论如何改变都不能影响原值!如果要改变原值可以考虑用引用类型或者ref/out参数!
Object o = s; //内存堆中一块新空间地址2,存放一个指针指向地址1
Object o1 = o; //内存中一块新空间地址3,存放一个指针,指向地址2
o = "2"; //内存中一块新空间地址4,目前没有其他指针指向这个地址
===================================================================================
所以,上面Object o = s;//内存堆中一块新空间地址2,存放一个指针指向地址1-----"因该是内存堆中一块新空间地址2,存放一个指针指向地址a(此地址为s的一个副本地址)",个人理解,大家讨论!
Object o = s; //内存堆中一块新空间地址2,存放一个指针指向地址1
Object o1 = o; //内存中一块新空间地址3,存放一个指针,指向地址2
o = "2"; //内存中一块新空间地址4,目前没有其他指针指向这个地址
================================================================================
所以,"Object o = s; //内存堆中一块新空间地址2,存放一个指针指向地址1"
------因该是//内存堆中一块新空间地址2,存放一个指针指向地a(此地址为string s="1"中s的一个副本地址),其他注释也同样解释!个人理解,大家讨论!
--------------
这个就是引用类型,或者用ref或out(相当于C++中的指针)