C#8.0新语法using declaration
我们在代码中经常使用using保障非托管资源的释放
static void Main(string[] args) { using (var options = Parse(args)) { if (options["verbose"]) { WriteLine("Logging..."); } ... } // options disposed here }
using虽然释放数据非常有效,但是有的时候会带来过多的缩进,导致代码不好阅读。
using (var a = ...) { //do something 1 using (var a = ...) { //do something 2 using (var a = ...) { //do something 3 } } }
在C# 8.0中引入了一个新的using语法,可以不用花括号,变量出了其生命周期自动释放。 该语法功能上有点类似于C++的scoped_ptr,不过也支持async模式下的自动dispose。
static void Main(string[] args) { using var options = Parse(args); if (options["verbose"]) { WriteLine("Logging..."); } } // options disposed here
在新语法的加持下,上面的代码就可以简化如下
using var a = ...; //do something 1 using var b = ...; //do something 2 using var c = ...; //do something 3
看起来舒服多了有没有。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
C#语法新特性之元组实例详解
1.元组(Tuple) 元组(Tuple)在4.0 的时候就有了,但元组也有些缺点,如: 1)Tuple 会影响代码的可读性,因为它的属性名都是:Item1,Item2.. . 2)Tuple 还不够轻量级,因为它是引用类型(Class),对于一个变量要使用一个类型,有点太没必要了. 源代码如下: // 摘要: // 提供用于创造元组对象的静态方法.若要浏览此类型的.NET Framework 源代码,请参阅 Reference Source. public static class Tuple
-
详解C#中检查null的语法糖
目录 函数参数null检查 传统写法 ThrowIfNull C# 11的!!语法(已经取消) 有关null的一些操作 ?? ??= ?. ?[] 一些操作 结语 今天看到已经更新了devblogs,新增的C# 11的!!(用于检查null的语法)经过非常长的讨论,最后取消了.然后我又想起来null检查,这个可以说一说. 函数参数null检查 传统写法 写一个函数的时候,最经典的检查,估计也是大家最常使用的null检查,应该是这样的吧: public static void GetV1(stri
-
C#基础语法:as 运算符使用实例
as 运算符类似于强制转换操作.但是,如果无法进行转换,则 as 返回 null 而非引发异常. as 运算符只执行引用转换和装箱转换.as 运算符无法执行其他转换,如用户定义的转换,这类转换应使用强制转换表达式来执行. expression as type 等效于(但只计算一次 expression) expression is type ? (type)expression : (type)null as 运算符用于在兼容的引用类型之间执行转换.例如: // cs_keyword_as.cs
-
C#的自定义语法糖的使用详解
语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用.通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会. 对If...Where的封装--语法糖WhereIf(如果读者已经知晓,请自行跳过) 在做条件查询的时候,我们可能经常要写这样的代码: List<User> Query(User queryModel
-
C#的十种语法糖介绍
目录 语法糖 一.自动属性 二.隐式类型(var) 三.参数默认值和命名参数 四.对象初始化器和集合初始化器 五.匿名类和匿名方法 匿名类型 匿名类型的嵌套 匿名类型的限制: 匿名方法 六.扩展方法 七.内置泛型委托 八.Lambda表达式 九.标准查询运算符 十.Linq 语法糖 指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用.通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会. 需要声明的是“语法糖”这个词绝非贬义词,它可以给我们带来方便,
-
C#语法之泛型的多种应用
本篇文章主要介绍泛型的应用. 泛型是.NET work 2.0 版类库就已经提供的语法,主要用于提高代码的可重用性.类型安全性和效率. 泛型的定义 下面定义了一个普通类和一个泛型类,我们可以明确看到泛型类和普通类最大的区别就是多了一个<T>. 所以,这个<T>就标记了,这个类是泛型类.其中这个T,也可以写成A,B,C,D或其他字符. public class Generic { public String Name; } public class Generic<T>
-
C# using语法糖图文详解
前言 什么是语法糖? (语法糖就是像糖一样的语法-) 语法糖(Syntactic sugar),又名糖衣语法,最早是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的. 通俗点来讲就是简化后的语法,但是其效果和原先语法是一样的,只是更方便我们程序员使用而已. 举个日常生活中简单的例子,使用语法糖之前你想表达今天天气很热:"今天气温好热啊!",用了语法糖后:"天热!", 但是效果是一样的,都能够给别人传达今天天气很热的信息. 很多语言都有语法糖
-
利用C#9.0新语法如何提升if语句美感
前言 C# 语言一贯秉承简洁优美的宗旨,每次升级都会带来一些语法糖,让我们可以使代码变得更简洁.本文分享两个使用 C# 9.0 提升 if 语句美感的技巧示例. 使用属性模式代替 IsNullOrEmpty 在任何你使用 IsNullOrEmpty 的时候,可以考虑这样替换: string? hello = "hello world"; hello = null; // 旧的方式 if (!string.IsNullOrEmpty(hello)) { Console.WriteLine
-
C# 6.0的属性(Property)的语法与初始值详解
昨晚有学点新知识,是有关C# 6.0的. 在数据库创建有一张表: CREATE TABLE [dbo].[ToolLocation] ( [ToolLocation_nbr] SMALLINT IDENTITY(1,1) NOT NULL PRIMARY KEY, [LocationName] NVARCHAR(20) NOT NULL, [Description] NVARCHAR(50) NULL, [IsActive] BIT NOT NULL DEFAULT(1) ) GO Source
-
C#基础语法:Base关键字学习笔记
它与this关键字一样,都是作为类的实例(因此不能调用基类的静态成员和抽象成员)简写或者替代而存在的,只不过this关键字用于替代本类的实例,base关键字用于替代基类的实例,用法很简单,其访问基类的形式如下: base.[标识符] base[[表达式列表]] 这个类型的一看便可以大概猜测多用于基类实例的索引器操作,在我下面演示的代码中你会看到它的用法. 对于 base.[标识符]的访问形式再次说明一下: 对于非虚方法,这种访问仅仅是对基类实例成员的直接访问,完全等价于((base)
随机推荐
- Angular 4.x 路由快速入门学习
- javascript 在网页中的运用(asp.net)
- Android应用开发中View绘制的一些优化点解析
- 举例讲解iOS应用开发中对设计模式中的策略模式的使用
- JS实现鼠标经过好友列表中的好友头像时显示资料卡的效果
- JavaScript 动态加载脚本和样式的方法
- PHP字符串比较函数strcmp()和strcasecmp()使用总结
- 两个使用Python脚本操作文件的小示例分享
- Python中pygame的mouse鼠标事件用法实例
- 如何制作一个文本文件编辑器?
- CSS渐变统计柱形图
- json显示日期带T问题的解决方法
- 最权威的保养清洁液晶屏的方法及注意事项
- json-lib将json格式的字符串,转化为java对象的实例
- 基于dropdown.js实现的两款美观大气的二级导航菜单
- Windows取代浏览器,还是浏览器取代Windows 的分析
- Java高级特性(基础)
- Android实现手机壁纸改变的方法
- Java实现的猴子吃桃问题算法示例
- python使用any判断一个对象是否为空的方法