Sharp 6 新增的语法特性 https://docs.microsoft.com/zh-cn/dotnet/csharp/whats-new/csharp-6
1.只读自动属性
1.只读属性只能通过构造函数赋值
public Student(string lastname, string firstName)
{
this.LastName = lastname;
this.FirstName = firstName;
}
public string LastName { get; }
public string FirstName { get; }
2.只读属性的初始化
public ICollection<double> Geades { get; } = new List<double>();
3.gose to 取值
public override string ToString() => $"{FirstName}-{LastName}";
public string fullName => $"{FirstName}-{LastName}";
2 using static
1. 正常情况通过静态类访问静态方法
using static 引用任意类型,访问静态方法是不需要加类型名称
StaticClass.Next();
objClass.Nex1t();
Next();
Nex1t();
3.null 条件运算
1.单个运算符 ? 出现在引用类型或可以Null的类型后面追加,必须支持可空 null类型
Student student = null;
string name = student?.LastName?.ToString();
int? id = student?.Id;
2.两元表达式 ?? 当前值不可空(null)取当前值返回否则获取后面值,
student = new Student("AB", "CD");
string fullname = student?.fullName?.ToString();
int? testid = student?.Id ?? 22;
student.Id = 33;
testid = student?.Id ?? 22;
4.字符串内插槽
string lastname = "aaaa";
string first = "zhang";
string fullName = $"{lastname}------{first}";
5.异常筛选器,可以根据输出来选择相应的异常处理
public static void ExceptionShow()
{
try
{
throw new Exception("AAA");
}
catch (Exception ex) when (ex.Message.Contains("BBB"))
{
throw;
}
catch (Exception ex) when (ex.Message.Contains("AAA"))
{
throw;
}
}
6.nameof 表达式 获取类型名称
string className = nameof(StaticClass);
string studentNmae = nameof(Student);
7.新增属性发生变化 INotifyPropertyChanged 监听属性发布订阅
NotifyPropertyChanged notify = new();
notify.PropertyChanged += (object o,
PropertyChangedEventArgs args) =>
{
};
notify.name = "zhangpp";
public class NotifyPropertyChanged : INotifyPropertyChanged
{
public string Name
{
get
{
return name;
}
set
{
name = value;
PropertyChanged?.Invoke(this,
new PropertyChangedEventArgs(nameof(name)));
}
}
public string name;
public event PropertyChangedEventHandler PropertyChanged;
}
8.使用索引器初始化关联集合
Dictionary<int, string> keys = new Dictionary<int, string>
{
{ 404,"Page Not Found"},
{ 302,"Page moved, but left a forwarding address."},
{ 500,"The web server can't come out to play today"},
};
keys.Add(123, "加油吧");
keys.Remove(123, out string value);