1、字符串拼接
var name = "name1";
var action = "action1";
原始
var Fun1 = "你的名字是"+ name + ",你要" + action;
进阶
var Fun2 = string.Format("你的名字是{0},你要{1}", name, action);
优化
var Fun3 = $"你的名字是{name},你要{action}";
2、字符串转化(以string转int为例)
string num = "123";
原始
int newNum1 = Convert.ToInt32(num);
int newNum2 = int.Parse(num);
如果输入的num不是数字的字符串,那么程序就会抛异常
进阶
try
{
int newNum3 = Convert.ToInt32(num);
int newNum4 = int.Parse(num);
}
catch (Exception)
{
//转换异常处理
}
这种方式看似是能解决问题,但是程序中进行字符串转化会相当的频繁,如果每个地方都写try/catch语句,那么程序肯定更加臃肿。
优化
if(int.TryParse(num,out int newNum5))
{
}
else
{
//转换异常处理
}
使用TryParse方法可以帮我们解决第二种方法的臃肿问题,是一个比较好的方法
3、?和??的使用
class Father
{
public Son Son { get; set; }
}
class Son
{
public int? age { get; set; }
}
static void Main(string[] args)
{
var fater = new Father();
}
原始
var age1 = father.Son.age;
这种方法没有任何异常处理措施,很容易出问题
进阶
var age2 = 0;
if(father != null && father.Son != null && father.Son.age.HasValue)
{
age2 = father.Son.age;
}
这种方法是可以避免异常,但是太过于繁琐
优化
var age3 = father?.Son?.age ?? 0;
这种方法就很简洁了,并且如果访问的过程中出现异常,age3将被赋值0
4、Switch表达式
我们可以通过switch表达式达到简化if语句的代码
IF语句
int grade = 60;
string result = "";
if(grade >= 0 && grade < 30)
result = "差";
else if(grade >= 30 && grade < 60)
result = "中";
else if(grade >= 60 && grade < 90)
result = "良";
else if(grade >= 90)
result = "优";
else
result = "异常";
switch方法优化
int grade = 60;
string result2 = grade switch
{
>=0 and < 30 => "差",
>=30 and < 60 => "中",
>=60 and < 90 => "良",
>=90 => "优",
_ => "异常"
};
switch方法稍微简便一点,可读性也高一些