C#6.0新特性
首先
自动属性初始化增强
public class Customer
{
public string First {
get;
set; } =
"Jane";
public string Last {
get;
set; } =
"Doe";
}
public class Customer
{
public string First {
get; } =
"Jane";
public string Last {
get; } =
"Doe";
}
public class Customer
{
//只读的属性
public string Name {
get; };
//在初始化方法中赋值,可行~
public Customer(
string first,
string last)
{
Name = first +
" " +
last;
}
}
在C#5.0中是不可行的 如下图:
方法函数支持lambda写法 如下:
public void Print() => Console.WriteLine(First +
" " + Last);
支持直接导入命名空间一样导入静态类,而不用在代码中使用静态类名 如下:
//静态导入Console
using static System.Console;
using static System.Math;
using static System.DayOfWeek;
class Program
{
static void Main()
{
//直接使用方法而不用Console.WriteLine
WriteLine(Sqrt(
3*
3 +
4*
4));
WriteLine(Friday -
Monday);
}
}
扩展方法,(这个不是很懂,解释不好请原谅)
在Main类中静态的导入你要扩展的类型,然后写你需要扩展的方法..?.. - -,不懂..
using static System.Linq.Enumerable;
// The type, not the namespace
class Program
{
static void Main()
{
var range = Range(
5,
17);
// Ok: not extension
var odd = Where(range, i => i %
2 ==
1);
// Error, not in scope
var even = range.Where(i => i %
2 ==
0);
// Ok
}
}
非空的语法糖如下:
int? first = customers?[
0].Orders.Count();
//上面的写法等同于下面
int? first = (customers !=
null) ? customers[
0].Orders.Count() :
null;
字符串格式化新玩法:
//原来的,我们需要这样..
var s = String.Format(
"{0} is {1} year{{s}} old", p.Name, p.Age);
//C#6.0中,直接如下:
var s = $
"{p.Name} is {p.Age} year{{s}} old";
//在{}中甚至可以是任意的..(单词不会..表达式还是什么鬼.. - -,)反正如下:
var s = $
"{p.Name,20} is {p.Age:D3} year{{s}} old";
var s = $
"{p.Name} is {p.Age} year{(p.Age == 1 ? "" : "s
")} old";
索引初始化:
var numbers =
new Dictionary<
int,
string>
{
[7] =
"seven",
[9] =
"nine",
[13] =
"thirteen"
};
异常过滤器:
如果When中用括号括起来的表达式计算结果为true,catch块中运行,否则异常持续。
( - -,然而我也并没有搞懂..求大神解释..)
try { … }
catch (MyException e) when (myfilter(e))
{
…
}
可异步等待的Catch块:
Resource res =
null;
try
{
res =
await Resource.OpenAsync(…);
// You could do this.
…
}
catch(ResourceException e)
{
await Resource.LogAsync(res, e);
// Now you can do this …
}
finally
{
if (res !=
null)
await res.CloseAsync();
// … and this.
}
基本到此就结束了, - -,水平有限.不好与不完善的地方请指出..免得误导大家..
转载请注明原文地址: https://ju.6miu.com/read-13569.html