如何在部分代码中使用命名空间

时间:2019-07-02 07:57:15

标签: c# namespaces using

我想使用namespace System.Security.Cryptography,但仅用于代码的一小部分,这样,如果我尝试在定义的区域之外使用命名空间的classesfunction,它将不会”工作。我期望的结果与using中的types语句相似,但是具有namespaces

下面是示例代码,展示了我想要的内容:

using(System.Security.Cryptography;){
// namespace can be used from now on
            using (MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider())
            {
                UTF8Encoding utf8 =new UTF8Encoding();
                byte[] data = md5.ComputeHash(utf8.GetBytes(input));
                return Convert.ToBase64String(data);
            }
}
//now namespace can not be used- error if you are trying to use it

这有可能吗?

2 个答案:

答案 0 :(得分:1)

将其放入或使用,例如:

System.Security.Cryptography.MD5CryptoServiceProvider

然后无需使用。

我的意思是:

 using (System.Security.Cryptography.MD5CryptoServiceProvider md5 = new System.Security.Cryptography.MD5CryptoServiceProvider())
 {
     System.Text.UTF8Encoding utf8 = new System.Text.UTF8Encoding();
     byte[] data = md5.ComputeHash(utf8.GetBytes(input));
     return Convert.ToBase64String(data);
 }

希望您现在就知道了:)

答案 1 :(得分:0)

我建议使用全限定名 System.Security.Cryptography.MD5CryptoServiceProvider,而不要使用using +简称(MD5CryptoServiceProvider):

  // var - let compiler derive the type
  using (var md5 = new System.Security.Cryptography.MD5CryptoServiceProvider())
  {
      UTF8Encoding utf8 = new UTF8Encoding();
      byte[] data = md5.ComputeHash(utf8.GetBytes(input));
      return Convert.ToBase64String(data);
  }

如果您这样做,则根本不必放using System.Security.Cryptography;