using 语句中使用的字节类型必须可隐式转换为 System.IDisposable
byte type used in a using statement must be implicitly convertible to System.IDisposable
为什么在使用以下代码时出现错误?不应该使用 "using" 关键字就足够了吗?我该如何解决它。
Error: byte[] type used in a using statement must be implicitly
convertible to 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();
}
}
}
正如错误试图告诉您的那样,您不能这样做。
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();
}
}
}
为什么在使用以下代码时出现错误?不应该使用 "using" 关键字就足够了吗?我该如何解决它。
Error: byte[] type used in a using statement must be implicitly convertible to 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();
}
}
}
正如错误试图告诉您的那样,您不能这样做。
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();
}
}
}