首页 > 编程语言 >C#中使用using进行资源管理的的类型有哪些?

C#中使用using进行资源管理的的类型有哪些?

时间:2023-05-28 21:56:39浏览次数:38  
标签:C# System FileStream connection IO new using 资源管理

在C#中,实现IDisposable接口的类型可以使用using语句进行资源管理,具体如下:

1. System.IO.Stream:表示字节流的抽象类。它是所有文件I/O操作的基类,包括文件读取和写入。

using (Stream stream = new FileStream("file.txt", FileMode.Open))
{
    // 使用stream对象进行文件读取操作
}

  

2. System.IO.FileStream:表示文件流的类。它继承自Stream类,可以用于文件读取和写入。

using (FileStream fileStream = new FileStream("file.txt", FileMode.Open))
{
    // 使用fileStream对象进行文件读取操作
}

  

3. System.IO.BinaryReader和System.IO.BinaryWriter:分别表示二进制读取器和二进制写入器。它们都继承自 System.IO.Stream类。

using (BinaryReader reader = new BinaryReader(new FileStream("file.bin", FileMode.Open)))
{
    // 使用reader对象进行二进制文件读取操作
}

using (BinaryWriter writer = new BinaryWriter(new FileStream("file.bin", FileMode.Create)))
{
    // 使用writer对象进行二进制文件写入操作
}

  

4. System.IO.MemoryStream:表示内存中的流。它继承自Stream类,可以用于读取和写入内存中的数据。

using (MemoryStream memoryStream = new MemoryStream())
{
    // 使用memoryStream对象进行内存读取和写入操作
}

  

5. System.Data.SqlClient.SqlConnection、System.Data.OleDb.OleDbConnection和 System.Data.Odbc.OdbcConnection:分别表示SQL Server、OLE DB和ODBC数据源的连接。它们都实现了IDisposable接 口,可以用于释放连接资源。

using (SqlConnection connection = new SqlConnection(connectionString))
{
    // 使用connection对象进行数据库操作
}

using (OleDbConnection connection = new OleDbConnection(connectionString))
{
    // 使用connection对象进行数据库操作
}

using (OdbcConnection connection = new OdbcConnection(connectionString))
{
    // 使用connection对象进行数据库操作
} 

除了以上类型,还有如下的常用类型:

  • BinaryReader
  • BinaryWriter
  • DeflateStream
  • GZipStream
  • MemoryStream
  • StreamReader
  • StreamWriter
  • ZipArchive

标签:C#,System,FileStream,connection,IO,new,using,资源管理
From: https://www.cnblogs.com/mryanxiu/p/17438936.html

相关文章

  • ABC 303
    祭奠一次烂掉的ABC。C怎么WA了?F怎么T了?F在kenkoooo上的评分怎么这么高?A点击查看代码#include<bits/stdc++.h>usingnamespacestd;#definede(x)cout<<#x<<"="<<x<<endlusingll=longlong;intmain(){ ios::sync_with_stdio(f......
  • SpringCloudAlibaba整合分布式事务Seata
    目录1整合分布式事务Seata1.1环境搭建1.1.1Nacos搭建1.1.2Seata搭建1.2项目搭建1.2.1项目示意1.2.2pom.xml1.2.2.1alibaba-demo模块1.2.2.2call模块1.2.2.3order模块1.2.2.4common模块1.2.3配置文件1.2.3.1order模块1.2.3.2call模块1.2.4OpenFeign调用1.2.5order......
  • synchronized底层原理
    synchronized对象锁采用互斥的方式使得在同一时刻只有一个线程能够持有锁并操作共享资源,如果其它线程想要获取锁就会进入阻塞状态,从而保证了线程安全问题。synchronized底层原理:synchronized的实现基于JVM的锁监视器(monitor),每个JVM都有维护自己的一套锁监视器,当集群部署时synchro......
  • Oracle 11G的审计功能开启与关闭
    Oracle11G的审计功能开启与关闭Oracle11g安装后会默认开启数据库审计功能,并且日志保存在SYSTEM表空间中。导致SYSTEM空间越来越大。当表空间已满时,会导致无法连接数据库。建议数据库安装完成之后将此功能关闭,当需要时候再进行开启。参数说明:审计功能由参数audit_trail......
  • C语言进阶--#pragma pack
    为什么需要内存对齐?--CPU对内存的读取不是连续的,而是分成块读取的,块的大小只能是1、2、4、16、。。。字节--当读取操作的数据未对齐,则需要两次总线周期来访问内存,因此性能会大打折扣--某些硬件平台只能从规定的相对地址处读取特定类型的数据,否则产生硬件异常#pragmapack用于......
  • const和assert的使用方法
    首先我们先简单的使用函数来模拟完成一个strcpy函数。#include<stdio.h>voidmy_strcpy(char*dest,char*src){ while(*src!='\0') { *dest=*src; dest++; src++; } *dest=*src;}intmain(){ chararr1[]="abcdefg"; chararr2[]={0}......
  • 2023-05-28 TypeScript学习记录(长更)
    概述:TypeScript(下称ts),js的超集,在js基础上进行了扩展并且新增了一些类型;不能被浏览器直接识别,需要编译为js才能被执行。为什么使用ts,而不是js:js语法的定义相对不够严谨,变量没有约束,而ts在js一些不足的地方进行了优化,使写法变得严谨也更为复杂起来。ts安装:npminstall-gtypescri......
  • 文心一言 VS 讯飞星火 VS chatgpt (24)-- 算法导论4.2 6题
    六、用Strassen算法作为子进程来进行一个knn矩阵和一个nkn矩阵相乘,最快需要花费多长时间?对两个输入矩阵规模互换的情况,回答相同的问题。文心一言:Strassen算法是一种用于矩阵乘法的分治算法,它将原始的矩阵分解为较小的子矩阵,然后使用子矩阵相乘的结果来计算原始矩阵的乘积......
  • LockSupport与线程中断
    1LockSupport是什么LockSupport是用来创建锁和其他同步类的基本阻塞原语。park方法可以阻塞线程,unpark方法可以唤醒线程。与object的wait和notify不同的是,不需要synchonized的限制,没有先后顺序的限制。2线程中断线程不应该被其他线程中断,应该自己中断。线程的三个中断方法......
  • 2023-05-25 EMC
    andcanintheinjectionclampat750mm.AndnowI'veperformedathresholdanalysisonexactlythisfailposition.Andthisisnowinthepresentationonthenextslide.Andyoucanseewewentup1dBmicroampAnd102dBmicroampsiscategorytwo......