前言
C#从语言上来说还是比较好用的,有一些别的语言没有的但是很好用的语法这里推荐一下。
判断非空并取值
传统写法
代码语言:javascript复制if (resultVo != null && resultVo.code == 0){}
推荐写法(is 模式表达式)
代码语言:javascript复制if (resultVo is { code: 0 }){}
示例2
代码语言:javascript复制if (((Button)sender).Tag is ZRecordModel recordModel){}
out 变量
以前,需要将 out 变量的声明、使用为两个不同的语句,如下所示:
代码语言:javascript复制int numericResult;
if (int.TryParse(input, out numericResult))
WriteLine(numericResult);
else
WriteLine("Could not parse input");
现在,可将前面两行合并为一行表示:
代码语言:javascript复制if (int.TryParse(input, out int result))
WriteLine(result);
else
WriteLine("Could not parse input");
匿名类
代码语言:javascript复制var Aemployee=new {
JoinDate="2012-09-23",
aPeople=new {pName="张三",pAge=26,pSex="男"}
};
匿名方法
代码语言:javascript复制//匿名方法只使用一次
ChangeUserPwd(listUser, delegate(User u) {
Console.WriteLine(u.Name "的新密码是:" u.Password);
});
//使用Lambda表达式
ChangeUserPwd(listUser, u=>
{
Console.WriteLine(u.Name "的新密码是:" u.Password);
});
case when
代码语言:javascript复制class Person
{
public int grade { get; set; }
public string name { get; set; }
public string level { get; set; }
}
IList<Person> persons= new List<Person>()
{
new Person{ grade = 50, name = "A_People", level = "None" },
new Person{ grade = 70, name = "B_People", level = "None" },
new Person{ grade = 91, name = "C_People", level = "None" }
};
foreach (Person p in persons)
{
switch (p)
{
case Person obj when obj.grade < 60:
{
obj.level = "不及格";
break;
}
case Person obj when obj.grade > 60 && obj.grade <= 70:
{
obj.level = "及格";
break;
}
case Person obj when obj.grade > 60 && obj.grade <= 70:
{
obj.level = "良好";
break;
}
case Person obj when obj.grade >= 90:
{
obj.level = "优秀";
break;
}
default:
{
Person.level = "None";
break;
}
}
Console.WriteLine($"{p.name} 成绩:{p.level}");
}