为什么我在使用以下代码时遇到错误?不应该使用"使用"关键字足够吗?我该如何解决呢?
错误: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();
}
}
}
答案 0 :(得分:2)
由于错误试图告诉您,您无法做到这一点。
using
语句仅用于调用Dispose()
。
如果您的类型没有任何原生资源,则无法实施IDisposable
,并且不需要using
声明。
答案 1 :(得分:2)
您只需要using
中MemoryStream
周围的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();
}
}
}