2016-06-15 44 views
1

我对C#很新,所以请原谅任何似乎基本的问题。在C#中,为什么我可以使用TextWriter代替StreamWriter?

我不知道为什么的TextWriter的StreamWriter既可以起到相同的作用(或似乎)在我的代码示例(与XML序列化方法的工作)。

在这个例子中,我玩弄了一系列XML元素,属性等,并希望通过将它们作为列表传递给序列化的函数(我已经创建)来序列化它们。

下面的代码(请注意使用的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(); 
} 

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

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

+1

你有足够的信息在

回答

2

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

由于接受基类TextWriter的实例的XmlSerialize.Serialize has an overload,这两个调用都可以并且具有相同的净效果。

相关问题