C#从语言上来说还是比较好用的,有一些别的语言没有的但是很好用的语法这里推荐一下。
传统写法
if (resultVo != null && resultVo.code == 0){}
推荐写法(is 模式表达式)
if (resultVo is { code: 0 }){}
示例2
if (((Button)sender).Tag is ZRecordModel recordModel){}
以前,需要将 out 变量的声明、使用为两个不同的语句,如下所示:
int numericResult;
if (int.TryParse(input, out numericResult))
WriteLine(numericResult);
else
WriteLine("Could not parse input");
现在,可将前面两行合并为一行表示:
if (int.TryParse(input, out int result))
WriteLine(result);
else
WriteLine("Could not parse input");
var Aemployee=new {
JoinDate="2012-09-23",
aPeople=new {pName="张三",pAge=26,pSex="男"}
};
//匿名方法只使用一次
ChangeUserPwd(listUser, delegate(User u) {
Console.WriteLine(u.Name+"的新密码是:"+u.Password);
});
//使用Lambda表达式
ChangeUserPwd(listUser, u=>
{
Console.WriteLine(u.Name + "的新密码是:" + u.Password);
});
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}");
}