在.NET Framework中,字符总是表示成16位的Unicode代码值,System.Char类型提供了两个只读常量字段:MinValue(定义成’\0’)和MaxValue(定义成’\uffff’)
转型(张志类型转化):最简单,效率最高的
char c =(char)65
使用Convert:提供静态方法来实现Char和数值类型的相互转换
char c = Convert.tochar(65)
比较字符串
`const int Num = 10000000;
string s1 = “abcdefgh”;
string s2 = “abcdefgh”;
//string s1 = "abcdefgh";
//string s2 = "amklklkl";
int end;
//Compare
int start = Environment.TickCount;
for (int i = 0; i < Num; i++)
{
string.Compare(s1, s2);
}
end=Environment.TickCount;
Console.WriteLine("Compare : " + (end - start));
//CompareTo
start = Environment.TickCount;
for (int i = 0; i < Num; i++)
{
s1.CompareTo(s2);
}
end = Environment.TickCount;
Console.WriteLine("CompareTo : " + (end - start));
//CompareOrdinal
start = Environment.TickCount;
for (int i = 0; i < Num; i++)
{
string.CompareOrdinal(s1, s2);
}
end = Environment.TickCount;
Console.WriteLine("CompareOrdinal : " + (end - start));
//静态Equals
start = Environment.TickCount;
for (int i = 0; i < Num; i++)
{
string.Equals(s1, s2);
}
end = Environment.TickCount;
Console.WriteLine("静态Equals : " + (end - start));
//实例Equals
start = Environment.TickCount;
for (int i = 0; i < Num; i++)
{
s1.Equals(s2);
}
end = Environment.TickCount;
Console.WriteLine("实例Equals : " + (end - start)); `
排序时应该总是首先区分大小写的比较
字符串留用
如果一个程序经常要对字符串进行区分大小写的比较,或者事先就知道许多字符串就具有相同的值比如string s1 = "yangxuan"
,这个时候就可以利用CLR的字符串留用机制来显著提升性能,这是因为CLR初始化的时候会创建一个内部哈希表
string s2 = "yangxuan"s1 = String.Intern(s1)
,显示留用。举个例子:
private static Int32 NumInter(string word,String[] wordlist)
word = String.Intern(word);
Int32 count = 0;
for(Int32 wordum =0;
wordnum<wordlist.Length;wordnum++)
{
if(Object.ReferenceEquals(word,wordlist[wordnum]))
count++;
}