如果我们熟练的掌握语法糖可以让我们用更简洁的代码来写程序,下面我们本人介绍几个C# 中常用的语法糖。
1. 属性简化
// 传统写法 private string _name; public string Name { get { return _name; } set { _name = value; } } // 语法糖写法 public string Name { get; set; } // 自动属性
如果我们不需要对get set 做特殊的定义,那么使用属性简化语法糖至少好处是可以少定义私有变量_name 及简化代码,这个将大大的提高代码编写效率。
2. 集合初始化器
// 传统写法 List<string> list = new List<string>(); list.Add("A"); list.Add("B"); list.Add("C"); // 语法糖写法 List<string> list = new List<string> { "A", "B", "C" };
3. 字典初始化器
// 传统写法 Dictionary<int, string> dict = new Dictionary<int, string>(); dict.Add(1, "One"); dict.Add(2, "Two"); // 语法糖写法 Dictionary<int, string> dict = new Dictionary<int, string> { {1, "One"}, {2, "Two"} }; // C# 6.0更简洁的写法 Dictionary<int, string> dict = new Dictionary<int, string> { [1] = "One", [2] = "Two" };
4. 空值条件运算符 (?. 和 ?[])
// 传统写法 string name = null; if (person != null) { name = person.Name; } // 语法糖写法 string name = person?.Name; // 用于集合 string first = people?[0]?.Name;
5. 空合并运算符 (??)
// 传统写法 string name = (person != null) ? person.Name : "Unknown"; // 语法糖写法 string name = person?.Name ?? "Unknown";
通过2个??符号,来实现3元运算。
6. 字符串插值 ($)
// 传统写法 string message = string.Format("Hello, {0}! Today is {1}.", name, date); // 语法糖写法(C# 6.0+) string message = $"Hello, {name}! Today is {date}.";
7. 表达式体成员
// 传统方法 public int Add(int a, int b) { return a + b; } // 语法糖写法 public int Add(int a, int b) => a + b; // 也可以用于属性 public string FullName => $"{FirstName} {LastName}";
8. using static
// 传统写法 double value = Math.Sqrt(16); // 语法糖写法 using static System.Math; double value = Sqrt(16);
9. nameof 表达式
// 传统写法 throw new ArgumentNullException("parameterName"); // 语法糖写法 throw new ArgumentNullException(nameof(parameterName));
10. 元组和解构
// 传统写法需要创建类或结构体来返回多个值 // 语法糖写法 // 返回元组 public (int, string) GetValues() => (42, "Answer"); // 解构 Var (number, text) = GetValues();
11. 模式匹配
// 传统写法 if (obj is int) { int i = (int)obj; // 使用i } // 语法糖写法 if (obj is int i) { // 使用i } // switch表达式 string result = shape switch { Circle c => $"Circle with radius {c.Radius}", Rectangle r => $"Rectangle {r.Width} x {r.Height}", _ => "Unknown shape" };
12. 默认字面量
// 传统写法 int number = default(int); // 语法糖写法 int number = default;
13. 索引和范围
var array = new int[] { 1, 2, 3, 4, 5 }; // 获取最后一个元素 var last = array[^1]; // 5 // 获取子数组 var sub = array[1..3]; // { 2, 3 }
14. 可空引用类型
string? nullableString = null; // 明确表示可为null string nonNullableString = "Hello"; // 不可为null
以上就是一些常用的语法糖,在我们实际开发环境中可以让我们编写程序非常的方便。