WPF C#便捷语法

2023-03-06 15:52:42 浏览数 (1)

前言

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}");
}

0 人点赞