yzx99

导航

 

string 只是 String 的一个别名,以下三种写法都可以
string myName="YZX";
String myName="YZX";
System.String myName="YZX";
http://www.cnblogs.com/skywind/archive/2007/04/30/733414.html 中有写到"在C#的编译时,会自动的把string转化为Sysem.string 即 using string = System.String;"
由于string是C#中的关键字,我们可以统一使用第一种写法

 

String虽然是类,但却不能用如下方法赋值:
String s1=new String("test");
编译器提示错误
与“string.String(char*)”最匹配的重载方法具有一些无效参数
有些示例还用以上方法写,我不知道它们是怎么编译通过的。

但是却有这样赋值方法:
String s1=new String('*', 5);
生成"*****"这个字符串给s1

 

如果只是取字符串的其中一位,除了用Substring函数外,还可以直接这种表达:
  Console.WriteLine("hello"[1]);

字符串中==是比较值,而如果要比较对象,要使用(object)来强制转换,或者用Object.ReferenceEquals来检测。

如下代码能说明什么问题:

using System;

class m
{
 public static void Main()
 {
  string str1="YZX";
  String str2="YZX";
  Console.WriteLine(str1==str2);
  Console.WriteLine((object)str1==(object)str2);

  string a = "hello";
  string b = "h";
 b += "ello"; // append to b
 Console.WriteLine(a==b);
 // output: True -- same value
 Console.WriteLine((object)a==(object)b); // False -- different objects

 }
}

运行结果:

True

True

True

False

第一个True与第三个True好理解,但第二个却是True,而第四个却是False。可以通过GetHashCode查看字符串是否使用同一位置的。原来字符串分配时有个特点:

值相同的字符串不重复添加,相同字符串在内存中只保存一份

http://www.cnblogs.com/JoeDZ/archive/2008/06/27/1230857.html

using System;
class Test{
        
static void Main(string[] args){
            
string a = "1";
            
string b = "1";
            
string c = "2";
        }
    }
}

使用visual studio 2005中的调试,转到反汇编,可以得到下面内容:
......
            string a = "1";
0000002b  mov         eax,dword ptr ds:[022C3048h] // 与下面相同
00000031  mov         ebx,eax
            string b = "1";
00000033  mov         eax,dword ptr ds:[022C3048h] // 与上面相同
00000039  mov         esi,eax
            string c = "2";
0000003b  mov         eax,dword ptr ds:[022C307Ch] // 不同
......

 

@的使用

这样的代码编译不会通过

  string str1="C:\Window";
  Console.WriteLine(str1);
错误信息:无法识别的转义序列

要这样写

  string str1="C:\\Window";
或这样写

  string str1=@"C:\Window";
有@标志后,后面就可以不用转义来说明了。@甚至可以写出这样的代码:

  string str1=@"C:\Win

dow";
  Console.WriteLine(str1);
即中间有带回车符。输出时也是带回车符。

 

一些Unicode的字符,可以这样输入;
"\uXXXX" 或 "\UXXXX"

 

posted on 2008-08-01 23:00  yzx99  阅读(357)  评论(0编辑  收藏  举报