ToB企服应用市场:ToB评测及商务社交产业平台

标题: C# 使用模式匹配的好处,由于好用所以推荐~ [打印本页]

作者: 张国伟    时间: 2024-7-18 15:26
标题: C# 使用模式匹配的好处,由于好用所以推荐~
模式匹配的这些用途展示了它在简化代码、提高可读性和灵活处置惩罚不同类型和条件的强大能力。随着C#语言的发展,模式匹配的功能和应用场景将会进一步扩展和深化。
下面我们看下一些经典且好用的模式匹配编码风格:
is断言 变量s已被安全地转换为string类型
  1. object obj = "Hello, World!";
  2. if (obj is string s) {
  3.     Console.WriteLine(s);
  4. }
复制代码
is对可空类型的断言
  1. public record Person(int Id, string? Name, bool? IsActived);
  2. var person = new Person(1, "vipwan", null);
  3. if (person?.IsActived is true)
  4. {
  5.     Console.WriteLine($"Id {person.Id} 已激活");
  6. }
复制代码
switch 答应使用多种模式,包括类型模式、常量模式和var模式 ,无需我们提前做转换以节省编码量
  1. switch (obj) {
  2.     case 0:
  3.         Console.WriteLine("Zero");
  4.         break;
  5.     case var value:
  6.         Console.WriteLine($"Value: {value}");
  7.         break;
  8. }
复制代码
C# 8.0引入了属性模式,答应基于对象的属性进行模式匹配
  1. public record Person(string Name,int Age);
  2. var person = new Person("John", 30);
  3. //通俗易懂属性模式:如果person不为null,且name==john 并且age>=18的时候
  4. if (person is { Name: "John", Age: >= 18 }) {
  5.     Console.WriteLine("John is an adult.");
  6. }
复制代码
C# 9.0引入的逻辑模式,它答应使用逻辑运算符and、or和not来组合模式。
  1. if (number is > 0 and < 10 or 100) {
  2.     Console.WriteLine("Number is between 0 and 10 or equals 100.");
  3. }
复制代码
元组模式答应你对元组的元素进行模式匹配,这在处置惩罚元组返回值或多值情况时非常有用
  1. var numbers = (1, "one", 18);
  2. if (numbers is (1, string name, int age)) {
  3.     Console.WriteLine($"The name of 1 is {name}, age {age}!");
  4. }
复制代码
列表模式答应对数组、列表等聚集进行模式匹配,可以匹配聚集的长度、元素等属性。这对于处置惩罚聚集数据时进行模式匹配提供了极大的便利。
  1. int[] numbers = { 1, 2, 3 };
  2. if (numbers is [1, 2, 3]) {
  3.     Console.WriteLine("The array contains the numbers 1, 2, and 3 in that order.");
  4. }
复制代码
切片模式答应你匹配聚集的一部分,而不是整个聚集。这在你只关心聚集的某个特定部分时特殊有用。
  1. int[] numbers = { 0, 1, 2, 3, 4 };
  2. if (numbers is [0, .., 4]) {
  3.     Console.WriteLine("The array starts with 0 and ends with 4.");
  4. }
复制代码
当然这里只是先容了部分好用的模式匹配,随着C#语言的逐代增强,可能会有更多的新特性和改进被引入。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4