关于c#里的string 类型
String 是字符串类型,它是个特殊的引用类型,特殊特殊到那呢?一直不解,近期大概发现了一些特殊。
String a=“abc”;
String b=”abc”;
这里的a 和b 不但值相同而且其引用的内存区域也相同。
当将b变成“bcd”时候,b的引用就不再指向a所指向的内存区域。
而是重新开辟了另一块内存空间。
(其实更严格的说是b 找所有的内存区域,如果没有和所指向区域值相同的内存区域则开辟新的,放置这前所未有的值)
而且在c#中要判断两个string类的对象的值是否相同,有两种方法即
(
1,==
2,equals()
);
要是想判断他们是否指向同一个引用则这两个对象向上转型,
转成object对象。
下面是一个经典的题:
Class test
{
Public static void change(string x, string y)
{
x=”bcd”;
y=x;
Console.writeLine(x)
Console.writeLine(y)
}
Static void main(string [] args)
{
String a=”abc”;
String b=”bcd”;
Change(a,b);
Console.writeLine(a);
Console.writeLine(b);
Console.ReadLine();
}
}
输出后结果:
bcd
bcd
abc
bcd
当调用方法时:
Chang(a,b);
就相当于做了
String x=a
String y=b;
于是就有了:
当执行
x=”bcd”;
y=x;
所以有了如上结果。
String是引用类型值传递;
数组是值类型引用传递