1

私は C# にかなり慣れていないので、基本的な質問はご容赦ください。

私のコード例 (XML シリアライゼーション メソッドでの作業) で、 TextWriterStreamWriterの両方が同じ機能を提供できる (またはそう思われる)理由が不思議です。

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

そして、これはまったく同じように動作するコードです(またはそのように見えます)(TextWriterの代わりにStreamWriterを使用していることに注意してください)

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インスタンスですが、1 つのインスタンスを基本クラス type の変数に割り当てますTextWriter。これで問題ありません。

基本クラスのインスタンスを受け入れるXmlSerialize.SerializeオーバーロードがあるためTextWriter、両方の呼び出しは問題なく、最終的な効果は同じです。

于 2016-06-15T06:15:58.260 に答える