C# using语法糖图文详解
作者:斯 钦 发布时间:2023-08-05 02:57:36
前言
什么是语法糖?
(语法糖就是像糖一样的语法…)
语法糖(Syntactic sugar),又名糖衣语法,最早是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的。
通俗点来讲就是简化后的语法,但是其效果和原先语法是一样的,只是更方便我们程序员使用而已。
举个日常生活中简单的例子,使用语法糖之前你想表达今天天气很热:“今天气温好热啊!”,用了语法糖后:“天热!”,
但是效果是一样的,都能够给别人传达今天天气很热的信息。
很多语言都有语法糖,C#也不例外。
using语法糖就是C#很多种语法糖中的一种。
using语法糖的格式相当于:
try { 代码片1; } finally { 代码片2; }
正常情况下,在代码片1的地方我们会执行一些逻辑代码,在代码片2的地方我们会相应的释放掉代码片1中对象的资源。
所以我们一般会在操作文件、数据库等的时候用到using语法糖!
所以所以在对象不能够被释放资源的情况下是不能使用using语法糖的!!
那你怎么能知道所使用的对象能不能释放资源?
输入 对象名. 之后,会自动弹出一些提示的方法,如果有Dispose方法,那么就可以进行相应的释放。
我们创建一个类让它继承IDisposable接口(这个类就是正常情况下我们操作文件、数据库等使用的类,在这里我没有使用那些类,所以就新建一个类继承一下IDisposable接口,模拟那些类的使用),在使用之后我们相应的释放这个类的资源。
代码展示:
using System;
using System.IO;
namespace Syntactic_sugar
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("正在运行代码1...");
func myfunc = new func();
try
{
Console.WriteLine("正在运行代码2...");
}
finally
{
myfunc.Dispose();
}
Console.WriteLine("正在运行代码3...");
}
}
public class func : IDisposable
{
public void Dispose()
{
Console.WriteLine("释放资源");
}
}
}
效果展示:
我们使用using语法糖之后。
代码展示:
using System;
using System.IO;
namespace Syntactic_sugar
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("正在运行代码1...");
using (var myfunc = new func())
{
Console.WriteLine("正在运行代码2...");
}
Console.WriteLine("正在运行代码3...");
}
}
public class func : IDisposable
{
public void Dispose()
{
Console.WriteLine("释放资源");
}
}
}
效果展示:
效果是一样的。
来源:https://blog.csdn.net/weixin_44884379/article/details/112577695


猜你喜欢
- 前言先放一个官网吧,其实本案例就是根据官网案例来的,只是进行了修改配置。Mybatis-plus官网一、搭建一个springboot项目&n
- Fragment必须是依存于Activity而存在的,因此Activity的生命周期会直接影响到Fragment的生命周期。官网这张图很好的
- Spring实例Bean的方法Spring实例Bean的方法,在AbstractAutowireCapableBeanFactory中的pr
- 本文实例为大家分享了Android实现支付宝记账饼图,点击旋转到最下面,供大家参考,具体内容如下代码:package com.example
- 1:定义一个自己的父级容器,让它继承自一个布局(LinearLayout、RelativeLayout都可以)public class Si
- 本文实例为大家分享了Flutter自定义底部导航栏的具体代码,供大家参考,具体内容如下文件结构:main.dartimport 'p
- 把SpringBoot项目打包成Docker镜像有两种方案:全自动化:先打好docker镜像仓库,然后在项目的maven配置中配置好仓库的地
- spring 容器的创建对应 SpringApplication 中 run 中调用的 createApplicationContext 方
- Android Studio是采用gradle来构建项目的,gradle是基于groovy语言的,如果只是用它构建普通Android项目的话
- 避免"索引越界"错误的规则如下(针对C++):不要使用静态或动态分配的数组,改用array或vector模板不要使用带方
- 在源代码中设置断点,然后进行点击调试若要启用反汇编窗口,请在工具>选项(或工具> 选项>调试下,选择启用地址级调试。若要在
- 在传统的同步开发模式下,当我们调用一个函数时,通过这个函数的参数将数据传入,并通过这个函数的返回值来返回最终的计算结果。但在多线程的异步开发
- RecyclerView已经出来很久了,许许多多的项目都开始从ListView转战RecyclerView,那么,上拉加载和下拉刷新是一件很
- 前言使用递归循环开发评论回复功能,适用于大部分的简单单体应用评论功能或许是大多数的单体应用之中会用到的功能,我们会在自己所开发的项目之中进行
- Spring Security是一款基于Spring框架的认证和授权框架,提供了一系列控制访问和保护应用程序的功能,同时也支持基于角色和权限
- 关于在spring 容器初始化 bean 和销毁前所做的操作定义方式有三种:第一种:通过注解@PostConstruct 和 @
- 文件上传页面<%@ page language="java" contentType="text/htm
- 1、有状态的bean与无状态的bean有状态bean:每个用户有自己特有的一个实例,在用户的生存期内,bean保存了用户的信息,即有状态;一
- 本文实例为大家分享了使用PageHelper插件实现Service层分页的具体代码,供大家参考,具体内容如下使用场景:平时分页我们可以直接使
- 网上有很多的OkHttp的教程,但是并没有一个是关于如何OkHttp处理重定向的。这里的处理重定向的意思是:把重定向请求拦截下来,然后我们自