1、字符串
1.1 字符串是不可变的
string类的关键特征在于它不可变的。当修改字符串的值时会新建一个字符串,例如:
string str = "abc";
System.Console.WriteLine(str + "def");
str+"def"会创建一个新的字符串,而不是在原str上进行修改。
1.2 System.Text.StringBuilder
当频繁的处理字符串时应使用StringBuilder,StringBuilder中包含Append()、AppendFormat()、Inser()、Remove()和Replace()等方法。
StringBuilder和string的区别在于,StringBuilder的这些方法会修改StringBuilder本身中的数据,而不是创建新的字符串。
1.3 可空修饰符
根据定义,值类型不能存储引用,所以一般不能将null赋值给值类型。为了声明可以存储null的变量,要使用可空修饰符?
static void main()
{
int? count = null;
... ...
}
2 数据类型转换
2.1 数据转换溢出
当给数据类型赋值时超出了数据类型的大小,则会出现溢出的情况,例如
static void main()
{
int n = int.MaxValue;
n = n + 1;
}
n的值超出了最大值所以会得到溢出值-2147483648。防止这种类型溢出可以将上述代码放在checked块中,或者在编译时使用checked选项,在“运行时”如果发生溢出,则会引发System.OverflowException异常。
static void main()
{
checked
{
int n = int.MaxValue;
n = n + 1;
}
}
2.2 字符串与数值类型的之间转换
由于没有定义从字符串到数据类型的转换,因此需要使用像Parse()这样的方法。每个数值类型都包含一个Parse()方法。
float number= float.Parse("12.34");
所有基元类型都支持TryParse()方法,该方法与Pares相似,但当转换失败是不会引发异常,而是返回false。
double number;
bool b = double.TryParse("12.34", number);
除此之外还可以用System.Convert实现类型之间的转换
double number = System.Convert.ToDouble("12.34");
bool b = System.Convert.ToBool("false");
3、空接合操作符
空接合操作符(??),其作用是“如果这个值为空,就使用另一个值”。
string fileName = GetFileName();
string fullName = fileName ?? "default.txt";