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

C# using语句中使用的字节类型必须隐式转换为System.IDisposable,c#,byte,filestream,idisposable,C#,Byte,Filestream,Idisposable,为什么我在使用以下代码时出错?使用“using”关键字就足够了吗?我怎样才能修好它 错误:using语句中使用的字节[]类型必须隐式 可转换为System.IDisposable 正如错误试图告诉您的那样,您不能这样做 using语句仅用于调用Dispose() 如果您的类型没有任何本机资源,它将不会实现IDisposable,也不需要using语句。您只需要Class2.getByTestStream()中MemoryStream周围的using块 在Class1.UploadFile()中,

为什么我在使用以下代码时出错?使用“using”关键字就足够了吗?我怎样才能修好它

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


正如错误试图告诉您的那样,您不能这样做

using
语句仅用于调用
Dispose()


如果您的类型没有任何本机资源,它将不会实现
IDisposable
,也不需要
using
语句。

您只需要
Class2.getByTestStream()中
MemoryStream
周围的
using


Class1.UploadFile()
中,您只需要
byte[]v=class2.GetByteStream()
。流已在
getByTestStream()

中正确释放。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();
          }
     }     
}

你的代码修复了这个问题。但我怎么知道物体被关闭而没有泄漏呢?因为这个UploadFile()方法在循环中运行,上载3000个文件,我可以在任务管理器中看到,随着程序上载文件,我的应用程序使用的内存越来越高。或者这是正常的行为?在代码示例中,您已经显示了一切正常。可能应用程序中的其他地方没有处理某些内容
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();
          }
     }     
}