C#字符串(string)的声明和初始化
字符串就是用字符拼接成的文本值。字符串在存储上类似数组,不仅字符串的长度可取,而且每一位上的元素也可取。
在C#语言中,可以通过 string 类声明字符串。
例如,声明一个字符串变量 strName,代码如下。
图1:C# 使用未初始化的变量时出现的错误提示
从图1可以看出,要使用一个变量,必须先对其进行初始化(即赋值)。对字符串进行初始化的方法主要有以下几种。
1) 引用字符串常量,示例代码如下:
图2:两个字符串对象引用相同的常量
2) 利用字符数组初始化字符串,示例代码如下:
3) 提取字符数组中的一部分初始化字符串,示例代码如下:
注意,
上面提到,字符串在使用之前必须初始化,但有一种情况,即使不对其进行初始化,程序也不会出现错误,就是字符串作为成员变量的情况。也就是将字符串的定义放到类中,而不是方法中,这时定义的字符串变量就叫作成员变量,它会保持默认值 null。
例如,下面的 C# 代码在运行时就不会出现错误。
在C#语言中,可以通过 string 类声明字符串。
声明字符串
在C#语言中,字符串必须包含在一对双引号之内,例如以下形式:"23.23"、"ABCDE"、"你好"、"http://c.biancheng.net"
这些都是字符串常量,字符串常量是系统能够显示的任何文字信息,甚至可以是单个字符。
注意:在C#中,由双引号引起来的都是字符串,不能作为其他数据类型使用,例如"1+2"
的输出结果永远也不会是 3。
string str = [null]
细节说明:- string:指定该变量为字符串类型。
- str:任意有效的标识符,表示字符串变量的名称。
- null:如果省略 null,表示 str 变量是未初始化的状态;否则,表示声明的字符串的值就等于 null。
例如,声明一个字符串变量 strName,代码如下。
string strName;也可以同时声明多个字符串,字符串名称之间用英文逗号隔开即可,代码如下:
string name, info, remark;
字符串的初始化
声明字符串之后,如果要使用该字符串,例如下面的代码:string str; Console.WriteLine(str);运行上面代码,将会出现图1所示的错误提示。
图1:C# 使用未初始化的变量时出现的错误提示
从图1可以看出,要使用一个变量,必须先对其进行初始化(即赋值)。对字符串进行初始化的方法主要有以下几种。
1) 引用字符串常量,示例代码如下:
string a = "时间就是金钱,我的朋友。"; string b = "锄禾日当午"; string str1, str2; str1 = "We are students"; str2 = "We are students";注意,当两个字符串对象引用相同的常量时,它们就会具有相同的实体。例如,上面代码中的 str1 和 str2 的内存示意图如图2所示。
图2:两个字符串对象引用相同的常量
2) 利用字符数组初始化字符串,示例代码如下:
char[] charArray = { 't', 'i', 'm', 'e' }; string str = new string(charArray);
3) 提取字符数组中的一部分初始化字符串,示例代码如下:
char[] charArray = { '时', '间', '就', '是', '金', '钱' }; string str = new string(charArray, 4, 2);
注意,
string str=null;
和string str= "";
是两个不同的概念:
- 前者是空对象,没有指向任何引用地址,调用 string 类的方法会抛出 NullReferenceException 空引用异常;
- 而后者是一个字符串,分配了内存空间,可以调用 string 类的任何方法,只是没有显示出任何数据而已。
上面提到,字符串在使用之前必须初始化,但有一种情况,即使不对其进行初始化,程序也不会出现错误,就是字符串作为成员变量的情况。也就是将字符串的定义放到类中,而不是方法中,这时定义的字符串变量就叫作成员变量,它会保持默认值 null。
例如,下面的 C# 代码在运行时就不会出现错误。
internal class Program { static string name; private static void Main(string[] args) { Console.Write(name); Console.ReadLine(); } }上面代码在运行时不会出现异常,因为 name 直接定义在了 Program 类中,所以它将作为成员变量,在 Main 方法中使用 Console.Write 方法输出时,它的值为默认值 null。