C#代码优化的一些内容(个人笔记)
1.模式匹配继承判断(C# 7.0)
var _ ={父级类} switch (_) { case {继承类}groupLines: break; case {继承类}groupLines: break; default: break; }
2.为空对象判断并使用其中属性
object?.{属性}
3.行内判断值
object{判断条件}?{TRUE}:{FALSE}
4.自适应类型使用
var _ = {object};
5.字符串拼接
var string1 = $"{item}{item2}";
6.公开只读类型优化写法
private {Class} myType; public {Class} Type=>myType ?? (myType= new {Class});
7.switch表达式模式匹配(C# 8.0)
//属性模式 public static decimal ComputeSalesTax(Address location, decimal salePrice) => location switch { { State: "WA" } => salePrice * 0.06M, { State: "MN" } => salePrice * 0.075M, { State: "MI" } => salePrice * 0.05M, // other cases removed for brevity... _ => 0M }; public static string Display(Point o) => o switch { (0, 0) => "origin", (var x, var y) => $"({x}, {y})" }; //元组模式 public static string RockPaperScissors(string first, string second) => (first, second) switch { ("rock", "paper") => "rock is covered by paper. Paper wins.", ("rock", "scissors") => "rock breaks scissors. Rock wins.", ("paper", "rock") => "paper covers rock. Paper wins.", ("paper", "scissors") => "paper is cut by scissors. Scissors wins.", ("scissors", "rock") => "scissors is broken by rock. Rock wins.", ("scissors", "paper") => "scissors cuts paper. Scissors wins.", (_, _) => "tie" };
8.using 优化结构(C# 8.0)
using var file = new System.IO.StreamWriter("WriteLines2.txt");
9.类映射简化写法
dynamic dy ={object};
10.类型判断转换
if (obj is {Class} obj2){}
11.数组操作索引和范围(C# 8.0)
var itemValues = item.GetValue(item).ToString().Split('.'); itemValues[^1]; //倒数第一 Range phrase = new Range(0, itemValues.Length-1); itemValues[phrase]; //范围取值 0-最大值减1 或者传入[0..^1]
12.异步流(C# 8.0)
public static async System.Collections.Generic.IAsyncEnumerable<int> GenerateSequence() { for (int i = 0; i < 20; i++) { await Task.Delay(100); yield return i; } } await foreach (var number in GenerateSequence()) { Console.WriteLine(number); }
13.元组(C# 7.0)
var unnamed = ("one", "two"); //基本初始化
var named = (first: "one", second: "two"); //声明初始化
var first ="one"; var second="two"; var accumulation = (first , second);//元组投影初始值设定项
internal IEnumerable<(int ID, string Title)> AllItemsMobileList() { return from item in AllItems where !item.IsDone orderby item.DueDate select (item.ID, item.Title); }//
14.Span内存控制 ref指针 *值指针 &内存指针
15..Net5中正则 using System.Text.RegularExpressions;
16..Net5中Json优化 using System.Text.Json;

浙公网安备 33010602011771号