我试图确保我的编码遵循正确的对象处理方式,因此我将这些规则强制执行为错误。但是我在这段代码中遇到了问题。
using System;
using System.IO;
using System.Runtime.Serialization;
using System.Xml;
class MyClass
{
public String ToXml()
{
var objSerializer =
new DataContractSerializer(GetType());
var objStream = new MemoryStream();
StreamReader objReader;
String strResult;
try
{
// Serialize the object
objSerializer.WriteObject(objStream, this);
// Move to start of stream to read out contents
objStream.Seek(0, SeekOrigin.Begin);
objReader = new StreamReader(objStream);
try
{
// Read Contents into a string
strResult = objReader.ReadToEnd();
}
finally
{
objReader.Dispose();
}
}
finally
{
if (objStream != null)
{
// objStream.Dispose();
}
}
return strResult;
}
}
如果我将
objStream.Dispose()
注释掉,会出现CA2000错误,因为我没有处理该对象;但是如果我去掉备注,则会出现多次处理的错误。还有什么东西在处理这个对象吗?或者在处理多个流时我做错了?
try-finally {dispose}
。 - Albin Sunnanbo