在写C#代码的时候,你肯定经常看到using这个词。它看起来不起眼,但用对了地方能省不少事。别小看这一行代码,搞清楚它的用途,代码会更整洁,资源管理也更安全。
用来引入命名空间
最常见的用法就是在文件开头写using System;这样的语句。它的作用是告诉编译器:接下来要用到的类或方法,可以在哪个“文件夹”里找。就像你在公司里想找某个同事,得先知道他在哪个部门一样。
比如你想输出一句话到控制台,可以直接写:
using System;
class Program {
static void Main() {
Console.WriteLine("Hello World");
}
}
如果没有using System;,你就得每次都写全称:System.Console.WriteLine("Hello World");,写多了手都酸。
用来自动释放资源
另一个重要用途是配合实现了IDisposable接口的对象使用,确保用完立刻释放资源。这在处理文件、数据库连接、网络流这些“贵重物品”时特别关键——不用了就得还回去,不然容易造成内存泄漏。
比如你要读一个文本文件,可以这样写:
using (var reader = new StreamReader("data.txt")) {
string content = reader.ReadToEnd();
Console.WriteLine(content);
}
// 到这里,reader 已经被自动释放了
这段代码等价于 try-finally 套娃,但更简洁。哪怕中间出错了,using也会保证文件被关闭。想象一下你借了图书馆的书,using就像是有个自动提醒+归还机制,不会让你忘了还书被罚款。
从 C# 8 开始,还可以把using直接放在变量声明前,写成:
using var writer = new StreamWriter("log.txt");
writer.Write("操作完成");
// 方法结束时自动释放
这种写法更轻便,适合局部作用域明确的情况。
一个小建议:当你看到某个对象是通过new创建的,而且类型名字里带Stream、Reader、Writer或者Connection这类词,多半就得考虑用using来包裹一下,别让它一直占着系统资源。