微软发布C#6.0、VS2015等系列产品也有一段时间了,但是网上的教程却不多,这里真对C#6.0给大家做了一些示例,分享给大家。
 

微软于2015年7月21日发布了Visual Studio 2015, .NET 2015, .NET Framework 4.6, ASP.NET 4.6, Azure SDK 2.7 for .NET, C# 6.0, F# 4.0, TypeScript 1.5, Visual Studio Android 模拟器 等重量级开发产品。

由于项目升级到了.NetFramework 4.6.1,开发工具转向了VS2015,趁机尝试下C#6.0。结果网上的教程不进人意,许久都没有更新,只好自己做一下总结。

1.自动属性初始化(Auto-property initializers)

 

代码如下:
 
    public int Age { get; set; } = 22;
 
    public IList<int> AgeList
    {
        get;
        set;
    } = new List<int> { 10,20,30,40,50 };
 
}

 

对于只读属性也可以这样直接初始化(C#5.0不支持),也可以直接在构造函数里初始化

 

代码如下:
    }
}

 

2.字符串嵌入值(String interpolation)

在之前版本的String.Format中有多少个参数就要写多少个占位符还必须按照顺序,否则就报错.参数一多,这样搞的话确实头疼.新版本中在字符串前用$来标识后边的字符可以使用{对象}来作为占位符.看个例子.

 

代码如下:

 

如果想输出{或}符号,写两个即可,如$"{{".
注意这个$符号,网上的N多教程都是没有这个东东的.是直接"\{ account.Age \}",这种方式在新版本里已经被抛弃了.

3.导入静态类(Using Static)

像之前使用Math这个静态类的时候要先导入System命名空间后才能使用它.现在可以直接导入这个静态,然后代码中直接使用其函数.

 

代码如下:

 

注意这里是using static ...
如果某个命名空间下有n个方法,用这种方式直接引入单个静态类而不用引用所有方法还是挺方便的.

4.空值运算符(Null-conditional operators)

之前写过无数个这样的判断代码

 

代码如下:
if (*** != null)
{
     //不为null的操作
}
return null;

 

现在使用可以简化这样方式.

 

代码如下:

 

如果account.AgeList为空则整个表达式返回空,否则后边的表达式的值.

5.对象初始化器(Index Initializers)

这种方式可以给字典或其他对象通过索引赋值初始化.

 

代码如下:
}

 

output:
key: 1 value:first
key: 2 value:second

6.异常过滤器(Exception filters)

 

代码如下:
        return;
    }
}

 

当when()里面返回的值不为true,将持续抛出异常,不会执行catch里面的方法.

7.nameof表达式 (nameof expressions)

在对方法参数进行检查时经常这样写:

 

代码如下:
}

 

如果某天参数的名字被修改了,下面的字符串很容易漏掉忘记修改.
使用nameof表达式后,编译的时候编译器将检查到有修改后自动导航与重构(-_-! 不知道翻译的对不对)

 

代码如下:
private static void Add(Account account)
{
     if (account == null)
         throw new ArgumentNullException(nameof(account));
}

 

8.在cath和finally语句块里使用await(Await in catch and finally blocks)

c#5.0里是不支持这么写.

 

代码如下:
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.
}

 

9.在属性里使用Lambda表达式(Expression bodies on property-like function members)

 

代码如下:
 
public void Print() => Console.WriteLine(Name);

 

10.在方法成员上使用Lambda表达式

 

代码如下:

 

关于C#6.0新增加的语言特性目前为止也就这么多.没有什么新功能,更多的是语法糖的改进.开发更舒服更快速. 

相关文章:

  • 2022-12-23
  • 2021-09-30
  • 2021-06-28
  • 2021-11-06
  • 2021-07-01
  • 2021-10-13
猜你喜欢
  • 2021-07-07
  • 2022-12-23
  • 2022-12-23
  • 2021-06-15
  • 2021-10-18
相关资源
相似解决方案