C# 字符串 string 是一个引用类型, 声明一般有两种
1 直接赋值 例:String str="123";
2.使用构造器赋值 例:String str=new String("123");
字符串属于不可变量,任何修改都会生成一个新的。当它声明后程序就会记忆它,下次使用时就不会再次划分内存,例:string s="123"; string s2=s1;
其实在内存中应该是只生成了一个内存空间。
string 的构造函数一共有以下几种
1. string (char c,int count); 生成数量为count的由c组成的字符串 例:string str=new string('c',2); 结果为同 string str="cc";
2.string(char[] c); 将字符数组转为字符串,例:string str=new string(new char[]{'1','2'});结果等同 string str="12";
3.string(char[] c,int start,int length); 将字符数组中部分元素拼成字符串 例:string str=new string(new char[]{'1','3','4'},0,2); 结果等同 string str="13";
4.一些其他的用法,比如用到了指针,这种常用,小编自己也没怎么用过,就暂不介绍了
在string类中有一个静态属性,string.Empty 即空字符串,表示不含任何字符,也不是null,它是一个常量,
大概介绍下空字符串和null的区别
1.空字符串是一个长度为0的字符串,null表示没有长度,string s=null; s.length 会抛出异常
2.空字符串可以调用字符串的所有方法,null只能调用部分
3.空字符串已经指向内存中的地址,null是没有指向的。
那么如何判断呢?
string.isNullorEmpty(str)
关于两个字符串的比较我们看下例
string a="123";
string b="1";
b+="23";
a==b 是成立的,表示值相同,object.referenceEquals(a,b) 是不同的,他们只是值相同,但不会指向同一实例
因字符串是包含任意字符文本的,所有其也包含转义序列,如:string str=" "; 表示换行,等等...
有写字符是不需要转义的,需要以@开头,例:@”c:windows“