MemberNotNullAttribute是 .NET 5 的新增特性,位于System.Diagnostics.CodeAnalysis.该特性用于显式声明,调用此方法后该值不再为 Null.示例如下,创建一个 csproj,启用 C# 8.0 的空引用类型新特性. <Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>net5.0</TargetFra…
在2.6版本发布两个月之后,Git 2.7发布.该版本带来了许多新特性以及性能的提升. 本文选取了Git 2.7带来的主要变化: git remote支持get-url子命令,可以显示指定远端的URL. git rebase新增了一个命令行选项--no-autostash,可以覆盖配置变量rebase.autostash. git worktree支持list子命令,可以显示代码库的工作树及相关的分支.工作树是Git 2.5初次引入的一个特性,旨在使在同一个代码库的多个分支上工作更简单. git…
Xcode8新特性 Interface Builder 随着14年的iPhone6和6P出来之后,iPhone的屏幕尺寸也越来越多,屏幕适配是一个需要解决的问题,以后不一定苹果又出什么尺寸的iPhone呢. 在iPhone6和6P发布的同一年,苹果推出的Xcode6中在原有的Auto layout的基础上,添加了Size Classes新特性,通过这个新特性可以使用一个XIB或者SB文件,适配不同的屏幕以及iPhone和iPad两种设备. 在Xcode8中,苹果推出了更加强大的可视化编辑工具预览…
今年7月底,JDK11已经进入了Rampdown Phase Two阶段,这标志着该版本所有特性已经被冻结,不会有新的JEP会加入版本中. 这一阶段将会修复P1–P2级BUG,之后,JDK11预定于今年9月25日发布.确定发布的17个JEP如下,其中包括14个新特性以及3个移除的功能: 181: Nest-Based Access Control(基于嵌套的访问控制) 309: Dynamic Class-File Constants(动态类文件常量) 315: Improve Aarch64…
JDK/Java 13 在一个月前已经发布,该版本带来了 5 大新特性,笔者观察到其中的 Text Blocks(文本块)特性似乎被讨论最多. 文本块特性与常见的 Python """any input""" 特性一样,它支持多行字符串文字,可以不需要使用大多数转义序列,同时可以让开发人员控制格式. 虽然这不是特别复杂的特性,但对于开发中想将 HTML 代码引入 Java 来说是极大的便利,代码可读性也极大提高. 关于 Java 13 的其它新特…
1.采用新的文件系统,不再通过工程文件(.sln和.csproj)来定义项目文件清单. 解决方案文件还是*.sln,但项目文件变成*.xproj了.在项目文件夹下新增的文件会被自动添加到项目中,不用再手动地执行把此文件包含在项目中. 2.Startup类 该类可以看作是整个ASP.NET Core的入口,该类主要存在3个方法: Main--入口方法: ConfigureServices--向IoC容器注册组件: Configure--注册Mideware 也许你第一次见到这个类会有点不明觉厉,该…
1 语法 Lambdas并不是新概念,在其它语言中已经烂大街了.直接进入主题,先看语法: [ captures ] ( params ) specifiers exception attr -> ret { body } (1) [ captures ] ( params ) -> ret { body } (2) [ captures ] ( params ) { body } (3) [ captures ] { body } (4) captures:捕获参数.详细格式见下图. 格式 意…
1 关键字noexcept 从C++11开始,我们能看到很多代码当中都有关键字noexcept.比如下面就是std::initializer_list的默认构造函数,其中使用了noexcept. constexpr initializer_list() noexcept : _M_array(0), _M_len(0) { } 该关键字告诉编译器,函数中不会发生异常,这有利于编译器对程序做更多的优化. 如果在运行时,noexecpt函数向外抛出了异常(如果函数内部捕捉了异常并完成处理,这种情况不…
1 统一初始化(Uniform Initialization) 在C++ 11之前,所有对象的初始化方式是不同的,经常让写代码的我们感到困惑.C++ 11努力创造一个统一的初始化方式. 其语法是使用{}和std::initializer_list,先看示例. int values[]{ 1, 2, 3 }; std::vector<int> v{ 2, 3, 6, 7 }; std::vector<std::string> cities{ "Berlin", &…
1 语法改进 1.1 模板表达式中的空格 在c++03 及以前 vector<list<int>>; //Error vector<list<int> >; //OK c++11 vector<list<int>>; //OK 1.2 nullptr 和 std::nullptr_t 在c++03 及以前 void f(int); void f(void*); f(0); //call f(int) f(NULL); //有歧义 c+…