《C#本质论》读书笔记(三)
2010-07-19 14:28 张抗 阅读(1261) 评论(1) 收藏 举报数据类型:字符串(string)
C#基本字符串类型为string(C#中类型区分大小写),BCL名称为System.string.
在这里讲一点string比较深入的内容.
length属性
length()方法,主要用于获取数据类型的长度,而在string类型中,length实际只是string的一个属性,C#语法允许像访问一个成员变量那样访问一个属性.为了判断一个字符串长度,可以使用string的length成员,我们将这个特定的成员称为一个只读属性.所以不能设置它,调用它也不需要任何参数.
代码清单 使用string的length成员
class PalindromeLength
{
static void Main()
{
string palindrome;
System.Console.Write("Enter a palindrome: ");
palindrome = System.Console.ReadLine();
System.Console.WriteLine("The palindrome, \"{0}\" is {1} characters.",palindrome,palindrome.length);
}
}
字符串是不可变的
string类型的关键特征在于它是不可变的。可以为一个string变量赋一个全新的值,但出于对性能的考虑,没有机制可供修改一个字符串的内容.
代码清单 错误,string是不可变的
class Uppercase
{
static void Main()
{
string text;
System.Console.Write("Enter text: ");
text = System.Console.ReadLine();
text.ToUpper();
System.Console.WriteLine(text);
}
}
------------------------------------------------------------------------------------------------------------------------
输出
Enter text:This is a test of the emergency broadcast system.
System.Text.string 和 System.Text.StringBuilder 区别?
如果有大量字符串进行修改,比如要经历多个步骤来构造一个长字符串,那么应当使用System.Text.StringBuilder.string的原理是在栈中新建一个内存地址,把原有的对象复制到新的地址,然后删除原来的对象.这一来二去的操作很麻烦,效率也不高.这个时候可以改用System.Text.StringBuilder,StringBuilder提供了Append()、AppendFormat()、Insert()、Remove()和Replace()这样的方法.但两者的关键区别在于,在System.Text.StringBuilder上,这些方法会修改变量中的数据,而不是返回一个新字符串.
null和void
与类型有关的两个额外的关键字是null和void.null是一个字面值,用来表示数据类型(具体就是引用类型)未被赋予任何值.void用来表示没有类型,或者没有任何值.
null值只能赋给引用类型,不能赋给值类型.引用类型包含一个指针、一个地址、或者一个引用,它指向内存中的一个特定位置.
必须注意的是,和根本不进行赋值相比,将null赋给一个引用类型完全是不同的概念.换言之,赋值为null的变量已被设置,而未进行赋值的变量未被设置.所以假如在赋值前使用变量,通常会造成一个编译时错误.
null意味着变量无任何值,而""意味着变量有一个值,一个空字符串.
void本质上并不是一个数据类型,它只是用于指出没有数据类型这一事实.
浙公网安备 33010602011771号