2024-07-01 · C# 基础 · 学习笔记

using 语句与声明

using 语句确保实现了 IDisposable 的对象在结束时自动 Dispose,即使中间抛了异常也会执行。这是释放文件、网络连接、数据库连接等非托管资源的标准方式。

C# 8 引入了 using 声明,不用加大括号,出了所在作用域就自动释放。写法更简洁:using var reader = new StreamReader(...)。

实践建议:1) 任何实现了 IDisposable 的对象都用 using;2) 不要手动调用 Close() 或 Dispose();3) using 可以嵌套,资源按反序释放。

代码示例

// 传统 using(带大括号)
using (var reader = new StreamReader("data.txt"))
{
    string line = reader.ReadLine();
    Console.WriteLine(line);
} // reader 在这里自动 Dispose

// C# 8+ using 声明(推荐)
using var writer = new StreamWriter("out.txt");
writer.WriteLine("写入内容");
// 出方法时自动 Dispose

// 多个 using
using var input = new FileStream("in.txt", FileMode.Open);
using var output = new FileStream("out.txt", FileMode.Create);
input.CopyTo(output);

// 等价于 try-finally
var reader2 = new StreamReader("data.txt");
try
{
    Console.WriteLine(reader2.ReadToEnd());
}
finally
{
    reader2.Dispose(); // 确保释放
}
学习小结:以上是我学习这个知识点时的笔记和心得。技术学习没有捷径,多写多练多踩坑,自然就掌握了。如果这篇笔记对你有帮助,欢迎继续看看其他文章。