在《C#本质论》中看到
由于引用类型只复制数据的地址,因此两个变量可以引用相同数据。除此之外,利用其中一个变量来更改变量,也会更改另一个变量引用的数据。无论赋值还是方法调用,这一点都是成立的。换言之,在一个方法的内部修改引用类型的数据,在调用者那里也会发生同样的改动。就试着写了这些代码 string sa = "我操";
string sb = sa;
Console.WriteLine(sa);
Console.WriteLine(sb);
sa = "我操2012";
Console.WriteLine(sa);
Console.WriteLine(sb);
Console.ReadLine();可是输出的是
我操
我操
我操2012
我操所以说最后一个并没有变成我操2012呀,是我理解错了吗?
由于引用类型只复制数据的地址,因此两个变量可以引用相同数据。除此之外,利用其中一个变量来更改变量,也会更改另一个变量引用的数据。无论赋值还是方法调用,这一点都是成立的。换言之,在一个方法的内部修改引用类型的数据,在调用者那里也会发生同样的改动。就试着写了这些代码 string sa = "我操";
string sb = sa;
Console.WriteLine(sa);
Console.WriteLine(sb);
sa = "我操2012";
Console.WriteLine(sa);
Console.WriteLine(sb);
Console.ReadLine();可是输出的是
我操
我操
我操2012
我操所以说最后一个并没有变成我操2012呀,是我理解错了吗?
解决方案 »
- 远程访问图片数据库
- double 怎么转为string.
- asp 中文编码
- 一个类似c/s的功能怎么实现?
- SqlCommandBuilder生成的SqlCommand对象能否自动处理%_'这样的特殊字符?
- 如何定义一个变量,是SQL的数据类型的枚举类型。
- datagridview添加一行
- 如何把dataSet中的一个表的部分字段取出来生成另外一个表?
- 一个初学者的求助!
- 使用了wrapper assembly 引用了COM组件的系统,发布后还要在目标机器上注册COM吗?
- 请问这这类网址,怎样才可以进入或者得到真正的网址
- 1.ContextMenuStrip在好友列表(类似与listview)控件上出现问题.2.实现加载好友分组功能.求大神解决,感激不尽!
string s = "a";
s = "b";
事实上是
string s = "a";
s = new string("b"); //你永远不能更改一个string,你的更改只是让它指向一个新的对象。
正如cao版主所说, sa = "我操2012";//你给sa赋值只是让他指向一个新的对象。但是sb没变。
又另外建立了一个对象吧
跟sb已经不是同一个了
比如 两个字符串用+号相加,你知道是怎么+的么?弄清楚了这个问题也可以搞清楚。
你可以把两个Object用+号加起来咩。
public class String
{
private string value;
public static implicit operator String(string value) { return new String { value = value }; }
public override string ToString()
{
return value;
}
}
String sa = "我操";
String sb = sa;
Console.WriteLine(sa);
Console.WriteLine(sb);
sa = "我操2012";
Console.WriteLine(sa);
Console.WriteLine(sb);
Console.ReadLine();
关键的问题是楼主把 变量 与 变量的成员 搞混淆了。
String sa = "我操";
String sb = sa;
Console.WriteLine(sa);
Console.WriteLine(sb);
sa = "我操2012";
String sb = sa;
Console.WriteLine(sa);
Console.WriteLine(sb);
Console.ReadLine();
这样就行了