一、C# 6的新特性,可以增加开发人员的效率。
///特性2:可以在引用命名空间是,使用静态字段
/// 官方:静态的using 声明允许调用静态方法时不使用类名
using static System.Console;
namespace CSharp6New
{
class Program
{
static void Main(string[] args)
{
NewAttr a = new NewAttr();
a.arrt = "Me is a New Attr";
///特性3:可以使用$输入拼接字符串
WriteLine($"attr:{a.arrt}");
a.show();
///特性5:
a?.show(); //<==> if(a!=null) a.show();
ReadLine();
}
}
public class NewAttr
{
/// <summary>
/// 特性1:属性可以直接赋值,无需在声明一个私有变量
/// 官方:自动实现的属性可以用属性初始化器来初始化
/// </summary>
public string arrt { get; set; } = "";
/// <summary>
/// 特性4:可以使用lambda表达式在函数,直接输出数据
/// 官方:表达式体方法
/// </summary>
public void show() => WriteLine("使用Lambda");
/// <summary>
/// 特性6:
/// 官方:表达式体属性
/// </summary>
public string FileName => $"Tankyou";
//public BoolIDP { get; }
/// <summary>
/// 使用新的nameof,可以访问字段名、属性名、方法名或类型名。
/// 这样在重构时,就不会遗漏名称的改变
/// </summary>
/// <param name="o"></param>
public void Mehod(object o)
{
if (o == null) throw new ArgumentNullException(nameof(o));
//<==> if (o == null) throw new ArgumentNullException("o");
//int? age = o == null ? null : 5;
}
/// <summary>
/// 新特性:字典初始化器
/// </summary>
public void DictInit()
{
var dia = new Dictionary<int, string>()
{
[2] = "a",
[3] = "b"
};
}
/// <summary>
/// 异常过滤器
/// </summary>
public void ExceFilter()
{
try
{
}catch(MyException ex) when (ex.ErrorCode == 405)
{
//优势:减少了代码的长度,但没有改变堆栈的跟踪
}
}
}
public class MyException:Exception
{
public int ErrorCode { get; set; } = 405;
}
}