为什么我得到错误时使用以下代码?难道用"正在使用"这个关键字还不够吗?我怎样才能解决这个问题。
错误:using语句中使用的byte[]类型必须是隐式的可转换为系统。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();
}
}
}
由于错误试图告诉您,您不能这样做。
using
语句只存在于调用Dispose()
。
如果你的类型没有任何本地资源,它不会实现IDisposable
,也不需要using
语句。
您只需要在Class2.GetByteStream()
中的MemoryStream
周围添加using
块。
在Class1.UploadFile()
中,您所需要的只是byte[] v = class2.GetByteStream()
。在GetByteStream()
中,流已经被正确处理。
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();
}
}
}