分享
 
 
 

(C#) “神奇”的String (1)

王朝c#·作者佚名  2006-01-31
窄屏简体版  字體: |||超大  

(C#) “神奇”的String (1)

2005-7-27

Allen Lee

1

在任何语言中,String都无疑是非常特殊的一种数据类型。C#中也是如此。

string是System.String的alias。

alias用using声明,用法如下

using [alias = ]class_or_namespace;

2

string是个独特的基本数据类型,它是基本数据类型中唯一的引用类型。作为基本数据类型,字符串可以声明为常量,但是却放在堆中。

字符串是唯一具有可变长度的基本数据类型

3

.NET Framework的String类型是不可变的。

不可改变的一个优点是它是线程安全的。

如果系统在编译时知道一个字符串中的字符是什么,就会内置这个字符串。被内置的字符串可以是一个常量,也可以不是。

把String定义为不可改变,它的表现像一个值类型,但实际上仍然是引用类型。

时刻记住的一点是:

任何对String的修改都会创建一个新String对象。

比如String.Replace(), String.ToLower()等待。

Const是初始化字符串最有效的方法,因为它涉及的IL指令最少。

4

String虽然是reference类型,但其分配却可以不使用new表达式,String object的初始化可采用“适用于value型别”的语法。如:

string str = "TestString";

此外:

C# Primer 中文版(Stanley B. Lippman, 侯捷/陈硕合译)中有这样一句:“如果声明的是Local array,有一个简短表示法可以使我们不必再明确调用new表达式。”

虽然我对Local array的确切定义不甚了解,但对于接下来的用法还是比较熟悉的。

string[] m_message =

{

"Hi, Please enter your name: ",

"Oops, Invalid name, Please try again: ",

// 此处的","用不用都可

}

5

String虽然是reference类型,但是operators (== and !=) 却定义为比较二者的值,而不是引用。

一个来自MSDN上的例子。

string a = "hello";

string b = "h";

b += "ello"; // append to b

Console.WriteLine( a == b );

// output: True -- same value

Console.WriteLine( (object)a == b ); // False -- different objects

6

String是reference类型没有错,但我试了以下代码后却让我感觉到String的特殊。

class Class1

{

static void Main(string[] args)

{

Class1 c = new Class1();

string str = "123";

c.Change(str);

Console.WriteLine(str);

}

private void Change(string s)

{

s = "456";

}

}

结果却是:

123

做了小改动之后:

class Class1

{

static void Main(string[] args)

{

Class1 c = new Class1();

string str = "123";

c.Change(ref str);

// 加上ref关键字

Console.WriteLine(str);

Console.Read();

}

private void Change(ref string s)

// 加上ref关键字

{

s = "456";

}

}

输出结果是:

456

7

今天暂时写到这里,可能有疏漏之处,望讨论指正。

Allen Lee

E-mail : alan_lz@126.com

QQ: 277523957

Created : 2005-7-27

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有