nameof
class Program { static void Main(string[] args) { Console.WriteLine(nameof(Student)); Console.WriteLine(nameof(Student.A)); Console.WriteLine(nameof(Student.B)); Console.WriteLine(nameof(Student.C)); Console.Read(); } public class Student { public string A => ""; public int B => 0; public DateTime C => DateTime.MinValue; } }
自动属性初始化
public class Student { public string A { get; set; } = ""; public int B { get; set; } = 0; public DateTime C { get; set; } = DateTime.MinValue; }
只读属性的初始化
public int X { get; } = 2;
using静态成员
关于String.Format()方法的改进
这是经典写法
String.Format("({0}, {1})", X, Y);
接下来一步步简化(先将String.Format用一个$代替)
$"({0}, {1})", X, Y);
然后将0,1两个占位符直接换成X,Y
$"({X}, {Y})";
用Lambda作为函数体
public class Student { public int X { get; } = 2; public int Y { get; set; } = 1; public override string ToString() => $"({X}, {Y})"; }
Lambda表达式用作属性(属性只读)
public class Student { public int X { get; } = 2; public int Y { get; set; } = 1; public int Z => X + Y; }
空值判断
static void Main(string[] args) { List<string> list = null; //从这里也可以看出这种操作符的一个规则:如果对象为空,则整个表达式的值为空。 Console.WriteLine($"{list?.Count}进来了"); Console.Read(); }