using语句中使用的字节类型必须可以隐式转换为System.IDisposable

时间:2015-08-18 18:18:01

标签: c# byte filestream idisposable

为什么我在使用以下代码时遇到错误?不应该使用"使用"关键字足够吗?我该如何解决呢?

  

错误:using语句中使用的byte []类型必须是隐式的   可转换为System.IDisposable

class Class1
{
     public void UploadFile()
     {
          using(var v = class2.GetByteStream())  //getting error on this line
          {
               //rest of code here
          }
     }
}

class Class2
{
     public byte[] GetByteStream()
     {
          using (MemoryStream ms = new MemoryStream())
          {
               //some code here
               return ms.ToArray();
          }
     }     
}

3 个答案:

答案 0 :(得分:2)

由于错误试图告诉您,您无法做到这一点。

using语句仅用于调用Dispose()

如果您的类型没有任何原生资源,则无法实施IDisposable,并且不需要using声明。

答案 1 :(得分:2)

您只需要usingMemoryStream周围的Class2.GetByteStream()屏蔽。

Class1.UploadFile()中,您只需要byte[] v = class2.GetByteStream()。该流已在GetByteStream()中正确处理。

答案 2 :(得分:1)

using语句用于调用IDisposable.Dispose方法,只能用于实现IDisposable的类型。字节数组不需要处理,也不会实现IDisposable。

这是正确的代码:

class Class1
{
     public void UploadFile()
     {
          var v = class2.GetByteStream();

          //rest of code here
     }
}

class Class2
{
     public byte[] GetByteStream()
     {
          using (MemoryStream ms = new MemoryStream())
          {
               //some code here
               return ms.ToArray();
          }
     }     
}