欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 八卦 > C#面试常考随笔8:using关键字有哪些用法?

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

2025/2/6 15:27:29 来源:https://blog.csdn.net/foolbirdM/article/details/145412010  浏览:    关键词: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的静态方法SqrtConsole.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博客

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com