一:引用命名空间
using + 命名空间名字,这样可以在程序中直接用命令空间中的类型,而不必指定类型的详细命名空间
二:为命名空间或类型创建别名
using + 别名 = 包括详细命名空间信息的具体的类型。
当同一个cs引用了不同的命名空间,但这些命名空间都包括了一个相同名字的类型的时候,可以使用using关键字来创建别名,这样会使代码更简洁。当需要用到这个类型的时候,就每个地方都要用详细命名空间的办法来区分这些相同名字的类型。而用别名的方法会更简洁,用到哪个类就给哪个类做别名声明就可以了。
using System;
using aClass = NameSpace1.MyClass;
using bClass = NameSpace2.MyClass;
......
//使用方式
aClass my1 = new aClass();
Console.WriteLine(my1);
bClass my2 = new bClass();
Console.WriteLine(my2);
三:使用using语句
使用using语句的目的就是允许程序员指定使用资源的对象应当何时释放资源。using 语句中使用的对象必须实现 IDisposable 接口。此接口提供了 Dispose 方法,该方法将释放此对象的资源。
首先IDisposable接口就是一种非常有用且非常常用的接口,该接口要求类实现Dispose()方法,在该方法中释放占用的资源。如果在析构函数中释放资源要等到垃圾回收时,太晚了。但是手动调用Dispose方法稍微有点麻烦,而且也怕忘了调用,这样资源也得不到及时释放,所以可以使用using关键字,using关键字代码块的末尾会自动调用Dispose方法。
要达到这样的目的,用try...catch来捕捉异常也是可以的,但用using也很方便。
// 使用SHA-256哈希函数处理秘钥
private static string GetSHA256Hash(string input)
{
using (SHA256 sha256 = System.Security.Cryptography.SHA256.Create())
{
byte[] inputBytes = Encoding.UTF8.GetBytes(input);
byte[] hashedBytes = sha256.ComputeHash(inputBytes);
// 取前32字节作为AES算法的秘钥
return Convert.ToBase64String(hashedBytes).Substring(0, 32);
}
}
- .net8中可简化使用:
using SHA256 sha256 = System.Security.Cryptography.SHA256.Create();
byte[] inputBytes = Encoding.UTF8.GetBytes(input);
byte[] hashedBytes = sha256.ComputeHash(inputBytes);
// 取前32字节作为AES算法的秘钥
return Convert.ToBase64String(hashedBytes).Substring(0, 32);
网友评论