.自动属性初始化的改进(有用)

原来的用法(声明时无法同时初始化),例如:
class MyClass
{
public int Age { get; set; }
public string Name { get; set; }
public MyClass()
{
Age = ;
Name = "张三";
}
} 新用法(声明时可同时初始化,更方便了),例如:
class MyClass
{
public int Age { get; set; } = ;
public string Name { get; set; } = "张三";
} .String.Format的改进(有用) 原来的用法:用string.Format(…)实现,例如:
class MyClass
{
public void MyMethod()
{
string name = "张三";
int age = ;
string s1 = string.Format("{0},{1}", name, age);
string s2 = string.Format("姓名={0},年龄={1}", name, age);
string s3 = string.Format("{0,15},{1:d3}", name, age);
string s4 = string.Format("{0,15},{1,10:d3}", name, age);
Console.WriteLine("{0},{1},{2},{3}", s1, s2, s3 ,s4);
string s5 = string.Format("{0:yyyy-MM-dd}", DateTime.Now);
}
} 新用法:用“$”前缀实现(变量直接写到大括号内,而且带智能提示,更方便了),例如:
class MyClass
{
public void MyMethod()
{
string name = "张三";
int age = ;
string s1 = $"{name},{age}";
string s2 = $"姓名={name},年龄={age}";
string s3 = $"{name,15},{age:d3}";
string s4 = $"{name,15},{age,10:d3}";
Console.WriteLine($"{s1},{s2},{s3},{s4}");
string s5 = $"{DateTime.Now:yyyy-MM-dd}";
}
} 、字典的初始化
原来的用法:
class MyClass
{
public void MyMethod()
{
Dictionary<string, int> student = new Dictionary<string, int>();
student.Add("a1", );
student.Add("a2", );
student.Add("a3", );
}
} 新用法(可以直接写初始化的值,更方便了):
class MyClass
{
public void MyMethod()
{
Dictionary<string, int> student = new Dictionary<string, int>()
{
["a1"] = ,
["a2"] = ,
["a3"] =
};
}
} 、可以用static声明静态类的引用 原来的用法:
using System;
namespace MyApp
{
class Demo1New
{
public static double MyMethod(double x, double angle)
{
return Math.Sin(x) + Math.Cos(angle);
}
}
} 新用法(表达式比较复杂的时候有用,代码更简洁了):
using static System.Math;
namespace MyApp
{
class Demo1New
{
public static double MyMethod(double x, double angle)
{
return Sin(x) + Cos(angle);
}
}
} 、nameof表达式 假定WPF应用程序中有下面的类:
public class MyClass
{
public string MyText { get; set; } = "aaa";
} 并假定有下面的XAML代码:
<StackPanel>
<TextBlock Name="txt1"/>
……
</StackPanel> 代码隐藏类中原来的用法:
txt1.SetBinding(TextBlock.TextProperty, "MyText"); 现在的用法(因为有错误检查智能提示,用起来更方便了):
txt1.SetBinding(TextBlock.TextProperty, nameof(MyClass.MyText)); 、Null-条件表达式 var ss = new string[] { "Foo", null };
var length0 = ss []?.Length; // 结果为3
var length1 = ss []?.Length; // 结果为null
var lengths = ss.Select (s => s?.Length ?? ); //结果为[3, 0] 、在try-catch-finally中使用await 异步编程中,原来在catch或者finally中无法使用await,现在可以了:
async void SomeMethod()
{
try
{
//...etc...
}
catch (Exception x)
{
var diagnosticData = await GenerateDiagnosticsAsync (x);
Logger.log (diagnosticData);
}
finally
{
await someObject.FinalizeAsync();
}
}

C#6.0新语法的更多相关文章

  1. 第十六节:语法总结(3)(C#6.0和C#7.0新语法)

    一. C# 6.0 新语法 1. 自动属性初始化可以赋值 /// <summary> /// 自动属性初始化 /// </summary> public class UserI ...

  2. ASP.NET MVC深入浅出系列(持续更新) ORM系列之Entity FrameWork详解(持续更新) 第十六节:语法总结(3)(C#6.0和C#7.0新语法) 第三节:深度剖析各类数据结构(Array、List、Queue、Stack)及线程安全问题和yeild关键字 各种通讯连接方式 设计模式篇 第十二节: 总结Quartz.Net几种部署模式(IIS、Exe、服务部署【借

    ASP.NET MVC深入浅出系列(持续更新)   一. ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态模 ...

  3. c# 7.0 6.0 新语法

    1.参考地址:https://docs.microsoft.com/zh-cn/dotnet/csharp/tutorials/exploration/csharp-7?tutorial-step=5 ...

  4. Visual Studio 2019 preview中体验C# 8.0新语法

    准备工作: Visual Studio 2019 Preview版本中并没有包含所有的C# 8.0的新功能,但目前也有一些可以试用了.在开始之前,需要进行入两项设置: 将Framework设置为.ne ...

  5. 使用 C# 9.0 新语法提升 if 语句美感

    C# 语言一贯秉承简洁优美的宗旨,每次升级都会带来一些语法糖,让我们可以使代码变得更简洁.本文分享两个使用 C# 9.0 提升 if 语句美感的技巧示例. 使用属性模式代替 IsNullOrEmpty ...

  6. 感受C#6.0新语法

    作为一门专为程(yu)序(fa)员(tang)考虑的语言,感受一下来自微软的满满的恶意... 1. 字符串内联在之前的版本中,常用的格式化字符串: var s = String.Format(&quo ...

  7. C#7.0新语法

    一.out输出参数 在以前使用out输出参数的时候,必须先定义变量,然后才能使用,例如: 先定义一个方法,方法参数是out类型的输出参数: private void DoNoting(out int ...

  8. c# 7.0新语法特性

    public class NewAtturibute { public void TestFunc() { // 01 Out变量 不用初始化 "; if (int.TryParse(inp ...

  9. 1、ASP.NET MVC入门到精通——新语法

    本系列目录:ASP.NET MVC4入门到精通系列目录汇总 在学习ASP.NET MVC之前,有必要先了解一下C#3.0所带来的新的语法特性,这一点尤为重要,因为在MVC项目中我们利用C#3.0的新特 ...

随机推荐

  1. oracle追加表空间

    ----查询表空间使用情况--- SELECT UPPER(F.TABLESPACE_NAME) "表空间名", D.TOT_GROOTTE_MB "表空间大小(M)&q ...

  2. Vue.js devtool插件安装后无法使用的解决办法【最简单有效的解决方法】

    在开发vue相关的项目时,使用vue devtools工具是一件极其有趣的事,你所有的操作都马上给你实时反馈. 然而有时候安装好的工具,在chrome中不显示. 在网上找过多次,一直没有找到有效解决方 ...

  3. 利用iftop找出是谁占用了带宽

    第一步:安装EPEL源    yum install epel-release 第二部:安装iftop         yum install iftop 然后用iftop命令即可查看相关信息 ift ...

  4. SpringBoot1-创建SpringBoot项目

    Spring Boot这两年的发展迅速,很多公司都在用,社区也越来越活越.本人也是基于此框架开发了几个项目,特和各位广大同行分享一下自己的心得体会. Spring Boot基于约束大于配置,开箱即用, ...

  5. Python全栈之路----常用模块----xml处理模块

    xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过,古时候,在json还没诞生的黑暗年代,大家只能选择用xml呀,至今很多传统公司如金融行业的很多系统的 ...

  6. UVa439——骑士的移动

    简单bfs #include <iostream> #include <cstring> #include <string> #include <map> ...

  7. windows下启动mysql服务

    当你无法连接你的mysql数据库时,或者因为某些原因导致与mysql数据库的连接丢失时,可通过以下方式启动mysql服务 1.命令行下启动mysql服务 以管理员身份运行cmd,进入mysql安装目录 ...

  8. hql和sql的一些区别

    日期格式化查询的区别: selectSql.append(" AND DATE_FORMAT(o.createDate,\'%Y-%m-%d\') = :createDate"); ...

  9. 听说https更安全

    0--介绍: 现在人们对网络的依赖越来越重,那么对于网络安全的要求也越来越高,传统的http协议实现了网络中的快速传输,完整传输,保证了信息的完整性,但是对于网络的安全性却没有那么强,很容易被人劫持, ...

  10. javascript window对象常用方法

    方法名称 prompt():显示可提示用户输入的对话框 alert():显示带有一个提示信息和 一个确定按钮的警示框 confirm():显示一个 带有提示信息.确定和取消按钮的对话框 open(): ...