C#6.0新语法
.自动属性初始化的改进(有用) 原来的用法(声明时无法同时初始化),例如:
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新语法的更多相关文章
- 第十六节:语法总结(3)(C#6.0和C#7.0新语法)
一. C# 6.0 新语法 1. 自动属性初始化可以赋值 /// <summary> /// 自动属性初始化 /// </summary> public class UserI ...
- 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的无状态模 ...
- c# 7.0 6.0 新语法
1.参考地址:https://docs.microsoft.com/zh-cn/dotnet/csharp/tutorials/exploration/csharp-7?tutorial-step=5 ...
- Visual Studio 2019 preview中体验C# 8.0新语法
准备工作: Visual Studio 2019 Preview版本中并没有包含所有的C# 8.0的新功能,但目前也有一些可以试用了.在开始之前,需要进行入两项设置: 将Framework设置为.ne ...
- 使用 C# 9.0 新语法提升 if 语句美感
C# 语言一贯秉承简洁优美的宗旨,每次升级都会带来一些语法糖,让我们可以使代码变得更简洁.本文分享两个使用 C# 9.0 提升 if 语句美感的技巧示例. 使用属性模式代替 IsNullOrEmpty ...
- 感受C#6.0新语法
作为一门专为程(yu)序(fa)员(tang)考虑的语言,感受一下来自微软的满满的恶意... 1. 字符串内联在之前的版本中,常用的格式化字符串: var s = String.Format(&quo ...
- C#7.0新语法
一.out输出参数 在以前使用out输出参数的时候,必须先定义变量,然后才能使用,例如: 先定义一个方法,方法参数是out类型的输出参数: private void DoNoting(out int ...
- c# 7.0新语法特性
public class NewAtturibute { public void TestFunc() { // 01 Out变量 不用初始化 "; if (int.TryParse(inp ...
- 1、ASP.NET MVC入门到精通——新语法
本系列目录:ASP.NET MVC4入门到精通系列目录汇总 在学习ASP.NET MVC之前,有必要先了解一下C#3.0所带来的新的语法特性,这一点尤为重要,因为在MVC项目中我们利用C#3.0的新特 ...
随机推荐
- Selenium之table操作
操作内容: 获取table总行数.总列数.获取某单元格的text值,删除一行[如果每行后边提供删除的按钮] HTML代码: <html><head><meta http- ...
- 动态改变Spring定时任务执行频率
@Component@EnableSchedulingpublic class updateCronTask implements SchedulingConfigurer { public stat ...
- 什么是混合app?
APP混合模式和原生模式的优劣 ECSHOP模板/ecshop开发中心(www.68ecshop.com) / 2014-06-27 每当你打算开发移动应用程序时,都要考虑你的应用如何创建以及如何部署 ...
- es6里面的arr方法
es6里面,关于arr的遍历以及查找,新增了很多的方法,对于不同的应用场景,运用合适的方法,可以达到事半功倍的效果: 一, arr.find():用于查找到符合条件的第一个成员,如果没有查找到的话,则 ...
- Introduction tp Operating System
一.虚拟化 为了让用户告诉操作系统如何利用虚拟机功能,OS提供给应用程序一些接口——系统调用,也会说提供了一个标准库. CPU通过分时达到虚拟化. 内存物理模型只是一个字节数组,读写修改需要制定地址. ...
- java中next()和nextLine()的区别
首先,next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键.Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后 ...
- 【开发】iOS入门 - Touch事件处理学习笔记
网上介绍iOS事件机制的文章,有不少都讲得很好,搬运一次意义不大,这里我就列一些要点吧. 跟Android一样,iOS的Touch事件也是从外到内传递,然后从内到外响应,可以看成一个U型结构.然而,个 ...
- 《DSP using MATLAB》Problem 7.16
使用一种固定窗函数法设计带通滤波器. 代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ...
- 钱管够,你能接这个项目吗?+ tomcat源码分析
最近看了几个咕泡学院的公开课,课堂老师讲到下面这两个经历. 1:钱给够,你有没有能力接下这个全国性的项目 平时也会有怀才不遇的时候,但是当你遇到这个机会的时候,有没有信心去接下这个单子呢? 信心和能力 ...
- PHP/Post 提交请求获取json数据,并转化为所需要的数组
/** * Post 提交请求获取json数据,并转化为所需要的数组 */ function request_post($url = '', $param = '') { if (empty($url ...