我对C#很新,所以请原谅任何看似基本的问题。
我想知道为什么 TextWriter 和 StreamWriter 可以在我的代码示例(使用XML序列化方法)中提供相同的功能(或似乎)。< / p>
在这个例子中,我正在使用XML元素,属性等列表,并希望通过将它们传递到 serialize 函数(我创建)作为序列化它们列表。
以下是代码 (请注意使用TextWriter) :
public static void serialize(List<Table> listOfTables)
{
var ser = new XmlSerializer(typeof(List<Table>));
TextWriter writer =
new StreamWriter(@"Location\Sample.xml");
ser.Serialize(writer, listOfTables);
writer.Close();
}
这里的代码完全相同(或似乎是这样) (注意使用StreamWriter而不是TextWriter) :
public static void serialize(List<Table> listOfTables)
{
var ser = new XmlSerializer(typeof(List<Table>));
StreamWriter writer =
new StreamWriter(@"Location\Sample.xml");
ser.Serialize(writer, listOfTables);
writer.Close();
}
由于我很新,我理解继承和抽象类的基础知识,但我似乎无法将所有部分连接在一起以便完全理解这一点。
请发送您的想法和建议。谢谢!
答案 0 :(得分:2)
两个实例都是StreamWriter
个实例,但是您分配给基类类型TextWriter
的变量的一个实例,这没关系。
由于XmlSerialize.Serialize
has an overload接受基类TextWriter
的实例,因此两个调用都可以,并且具有相同的净效果。