2016-06-15 45 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,這兩個調用都可以並且具有相同的淨效果。

相關問題