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",类似于指针,应该如何操作,
解决方案 »
- Jquery Ajax调用服务器事件有时成功有时失败
- 一个要发布的项目,怎么用vs打开
- 法执行程序。所执行的命令为 "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\vbc.exe" /noconfig
- 应用在asp.net 上的 JS 倒计时(时分秒) 求一个实例
- 打开一个页面,但要传一个参数到另外一个页面,怎么实现?
- 请问如何为复合服务器控件添加事件
- 菜鸟问题。。。。。。在线等!!!
- 新手求助。。。
- 请各位高手帮帮手,一个下拉框控件的郁闷问题。
- HtmlInputFile这个控建怎么才能得到上传文件的后缀名!
- 请大家指点一下,弹出对话框事件
- 请解释如下代码为什么不能通过,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++中的指针)