Q-->question A-->answer M-->mention
The Chapter 11st Char,String,Text
M:在.NET Framework中,字符总是表示为16位Unicode码.
Q:有何方法可实现各种数值类型与Char实例的转换?
A:1.强制类型转换,其效率最高
2.使用convert类型,用System.Convert类型的静态方法可以实现,但都是以checked来执行的,一旦发生数据丢失就会抛出一个overflowException
3.使用IConvertible接口,但不建议,因为调用接口中的方法,如ToUint16会引发装箱,所以效率低下
M:字符串为引用类型,其最重要的事实就是=>它是不可变的(immutable),再一个就是它不能用常量来构造,它的字符数组位于堆上,而不是线程堆栈上.
M:比较字符串时,应该尽量调用String自定义的Equals()等,而避免使用==或!=,因为其不易读懂和维护.使用其中Comparison.Ordinal效率最高,因为其先比较个数,不等就直接返回
string s1 = "AAA";
string s2 = "BBB";
Console.WriteLine(s1.Equals(s2,StringComparison.Ordinal));
M:字符串留用=>String.Intern(),String.Interned(),这个方法构造的字符串,会在CLR初始化的内部哈希表中进行留用.因此以后每一个相等的字符串引用都将指向此地址,在有些时候此功能是很有用的(比如大量重复比较)
Q:每个线程都有哪两个特殊的属性?
A:1.CurrentUICulture 获取向用户显示的资源
2.CurrentCulture 用于前者不合适的场合,如日期等..