1

我对 C# 很陌生,所以请原谅任何看似基本的问题。

我想知道为什么TextWriterStreamWriter在我的代码示例(使用 XML 序列化方法)中都可以提供相同的功能(或似乎)。

在此示例中,我正在处理 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();
}

由于我很新,我了解继承和抽象类的基础知识,但我似乎无法将所有部分组合在一起以完全理解这一点。

请发送您的想法和建议。谢谢!

4

1 回答 1

2

这两个实例都是StreamWriter实例,但一个实例分配给基类类型的变量TextWriter,这没关系。

由于XmlSerialize.Serialize具有接受基类实例的重载,因此TextWriter两个调用都可以并且具有相同的净效果。

于 2016-06-15T06:15:58.260 回答