如果我们熟练的掌握语法糖可以让我们用更简洁的代码来写程序,下面我们本人介绍几个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
以上就是一些常用的语法糖,在我们实际开发环境中可以让我们编写程序非常的方便。