手机版网站seo怎么做,外包公司好么,品牌营销策划书模板,网站搭建就来徐州百度网络非常好C# 9 新特性 —— 增强的模式匹配IntroC# 9 中进一步增强了模式匹配的用法#xff0c;使得模式匹配更为强大#xff0c;我们一起来了解一下吧SampleC# 9 中增强了模式匹配的用法#xff0c;增加了 and/or/not 操作符#xff0c;而且可以直接判断属性#xff0c;来看一下下… C# 9 新特性 —— 增强的模式匹配IntroC# 9 中进一步增强了模式匹配的用法使得模式匹配更为强大我们一起来了解一下吧SampleC# 9 中增强了模式匹配的用法增加了 and/or/not 操作符而且可以直接判断属性来看一下下面的这个示例var person new Person();// or
// string.IsNullOrEmpty(person.Description)
if (person.Description is null or { Length: 0 })
{Console.WriteLine(${nameof(person.Description)} is IsNullOrEmpty);
}// and
// !string.IsNullOrEmpty(person.Name)
if (person.Name is not null and { Length: 0 })
{if (person.Name[0] is ( a and z) or ( A and Z) or .){}
}// not
if (person.Name is not null)
{
}
这里的代码使用 DnSpy 反编译之后的代码是下面这样的Person person new Person();
string text person.Description;
bool flag text null || text.Length 0;
if (flag)
{Console.WriteLine(Description is IsNullOrEmpty);
}
text person.Name;
bool flag2 text ! null text.Length 0;
if (flag2)
{char c person.Name[0];if (c a){if (c z){goto IL_8B;}}else if (c A){if (c Z){goto IL_8B;}}else if (c ! , c ! .){goto IL_8B;}bool flag3 true;goto IL_8E;IL_8B:flag3 false;IL_8E:bool flag4 flag3;if (flag4){}
}
bool flag5 person.Name ! null;
if (flag5)
{
}
Switch这不仅适用于 is 也可以在 switch 中使用switch (person.Age)
{case 0 and 3:Console.WriteLine(baby);break;case 3 and 14:Console.WriteLine(child);break;case 14 and 22:Console.WriteLine(youth);break;case 22 and 60:Console.WriteLine(Adult);break;case 60 and 500:Console.WriteLine(Old man);break;case 500:Console.WriteLine(monster);break;
}
反编译后的代码int age person.Age;
int num age;
if (num 22)
{if (num 14){if (num 0){if (num 3){Console.WriteLine(child);}else{Console.WriteLine(baby);}}}else if (num 14){Console.WriteLine(youth);}
}
else if (num 60)
{if (num 22){Console.WriteLine(Adult);}
}
else if (num 500)
{Console.WriteLine(monster);
}
else
{Console.WriteLine(Old man);
}
More可以看到有些情况下可以简化不少代码尤其是 if 分支比较多的情况下使用上面 switch 这样的写法会清晰很多但是如果只是 string.IsNullOrEmpty 这种代码最好还是不要写得这么骚了小心要被同事吐槽了炫技需谨慎小心被 ...Referencehttps://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-9https://github.com/WeihanLi/SamplesInPractice/tree/master/CSharp9Samplehttps://github.com/WeihanLi/SamplesInPractice/blob/master/CSharp9Sample/PatternMatchingSample.cs