当前位置: 首页 > article >正文

C#面试常考随笔8:using关键字有哪些用法?

1. using 指令:引入命名空间

最常用的用法。通过using + 命名空间名字,可以在程序中直接使用该命名空间中的类型,而无需指定类型的完整命名空间路径。例如:

using System;
using System.Collections.Generic;
class Program
{
    static void Main()
    {
        List<int> numbers = new List<int>(); // 直接使用System.Collections.Generic中的List类型
        numbers.Add(1);
        Console.WriteLine(numbers[0]); // 直接使用System中的Console类型
    }
}

2. using static 指令:引入静态成员

通过using static + 类型,可以指定无需指定类型名称即可访问其静态成员的类型。使用该指令后,在代码中可以直接使用该类型的静态成员,而不必通过类型名来调用。例如:

using static System.Math;
class Program
{
    static void Main()
    {
        double result = Sqrt(16); // 直接使用System.Math的静态方法Sqrt
        Console.WriteLine(result);
    }
}

3. using 别名:为类型创建别名

当同一个 C# 文件引用了两个不同的命名空间,且这两个命名空间中都包含一个相同名字的类型时,为了避免混淆,可以使用using + 别名 = 包括详细命名空间信息的具体类型的方式为类型创建别名。例如:

using aClass = NameSpace1.MyClass;
using bClass = NameSpace2.MyClass;
namespace NameSpace1
{
    public class MyClass
    {
        public override string ToString()
        {
            return "You are in NameSpace1.MyClass";
        }
    }
}
namespace NameSpace2
{
    class MyClass
    {
        public override string ToString()
        {
            return "You are in NameSpace2.MyClass";
        }
    }
}
namespace testUsing
{
    class Class1
    {
        static void Main()
        {
            aClass my1 = new aClass();
            Console.WriteLine(my1);
            bClass my2 = new bClass();
            Console.WriteLine(my2);
        }
    }
}

4. using 语句:自动释放资源

using语句用于定义一个范围,在范围结束时自动调用对象的Dispose方法来释放资源。通常用于处理实现了IDisposable接口的对象,比如文件流、数据库连接等。语法形式为:

using (var resource = new ResourceType())
{
    // 使用resource对象的代码
}
// 离开这个代码块后,resource的Dispose方法会被自动调用,释放相关资源

例如,使用文件流读取文件内容时:

using (System.IO.StreamReader reader = new System.IO.StreamReader("test.txt"))
{
    string line;
    while ((line = reader.ReadLine()) != null)
    {
        Console.WriteLine(line);
    }
}
// 读取完毕后,StreamReader对象的Dispose方法会自动被调用,释放文件资源

这样可以确保即使在代码块中发生异常,相关资源也能被及时释放,避免资源泄漏。

扩展:

如何使用C#的using语句释放资源?什么是IDisposable接口?与垃圾回收有什么关系?-CSDN博客

 什么情况下,C#需要手动进行资源分配和释放?什么又是非托管资源?-CSDN博客


http://www.kler.cn/a/528113.html

相关文章:

  • 初识Cargo:Rust的强大构建工具与包管理器
  • DBUtils中QueryRunner(空参,传数据源)构造方法的区别及应用场景
  • 智能小区物业管理系统打造高效智能社区服务新生态
  • PHP Mail:高效邮件发送解决方案详解
  • AMS仿真方法
  • SQL进阶实战技巧:断点去重技术详解
  • 鸿蒙物流项目之基础结构
  • 解决Django非ORM模型提示初始化request问题
  • 文件读写操作
  • Sui 年度展望:2025 是走向主流的一年,将 Sui 打造成体验最友好的平台
  • DBeaver连接MySQL提示Access denied for user ‘‘@‘ip‘ (using password: YES)的解决方法
  • MySQL基础-多表查询
  • TensorFlow 示例摄氏度到华氏度的转换(二)
  • MySQL--》日志与主从复制的实战技巧
  • 【VM】VirtualBox安装ubuntu22.04虚拟机
  • 思考:从普通用户的角度而言,大模型选择的初步考量
  • p1044 栈
  • pytorch实现循环神经网络
  • 【开源免费】基于Vue和SpringBoot的医院挂号就诊系统(附论文)
  • 网络工程师 (10)设备管理