2016-06-15 17 views
1

私はC#で新しくなったので、基本的なように思われる質問はお許しください。 たTextWriterのStreamWriterの両方が同じ機能を果たす(またはように見える)(XMLシリアル方式での作業)私のコード例でできる理由C#では、なぜStreamWriterの代わりにTextWriterを使用できますか?

私は思ったんだけど。

この例では、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(); 
} 

私はかなり新しいんだと、私は目を理解します継承と抽象クラスの基礎がありますが、これを完全に理解するためにすべての要素を一緒に結合するようには思えません。

あなたの考えと提案をお送りください。ありがとう!

+1

あなたは

答えて

2

どちらのインスタンスもStreamWriterインスタンスですが、基本クラスの変数にはTextWriterという変数を割り当てます。これは問題ありません。

基本クラスTextWriterのインスタンスを受け入れるXmlSerialize.Serialize has an overloadなので、両方の呼び出しが正常で、同じ効果があります。

関連する問題