关于c#里的string 类型(转http://xianyun0216.blog.51cto.com/714887/167194)
2010-03-14 20:06
281 查看
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是引用类型值传递;
数组是值类型引用传递
本文出自 51CTO.COM技术博客
注:String 是引用类型,不过是不可变的。对字符串做一些操作(比如大小写的转换、+=), 实际上是重新创建了一个字符串(重新分配一块内存)。这也是为什么在做大量字符串拼接的时候要使用StringBuilder 而不用+=。
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
a |
b |
abc |
bcd |
Chang(a,b);
就相当于做了
String x=a
String y=b;
于是就有了:
a |
b |
abc |
bcd |
x |
y |
x=”bcd”;
y=x;
a |
b |
abc |
bcd |
x |
y |
String是引用类型值传递;
数组是值类型引用传递
本文出自 51CTO.COM技术博客
注:String 是引用类型,不过是不可变的。对字符串做一些操作(比如大小写的转换、+=), 实际上是重新创建了一个字符串(重新分配一块内存)。这也是为什么在做大量字符串拼接的时候要使用StringBuilder 而不用+=。
相关文章推荐
- 关于C#string的类型
- C#中关于String类型的常用方法
- 【C#】关于HttpContext.Current.Request.QueryString 你要知道点
- 理解C#中的string类型
- C# 关于数据类型转换
- C# string格式的日期时间字符串转为DateTime类型的方法
- Java 中关于 String 类型的 10 个问题
- Java中关于String类型的10个问题
- 在C#中,string 类型可与SQL SERVER中的int 类型作比较
- 关于C++和C#类型比较的相关内容
- 【转】关于C#值类型,引用类型,值传递,引用传递
- 关于spring mvc ajax请求乱码问题 StringHttpMessageConverter
- string类型函数 bcb做dll,c#调用
- swift中关于String类型的successor()
- C#利用反射动态创建对象 带参数的构造函数和String类型 (转载)
- C#中string类型赋值问题
- 关于String与Integer类型比较问题
- C#语言之“string格式的日期时间字符串转为DateTime类型”的方法
- Java中关于String类型的10个问题
- 关于Java的String类型