在C#中,为什么我可以使用TextWriter代替StreamWriter?
问题描述:
我对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继承和抽象类的基础知识,但我似乎无法将所有的部分结合在一起以充分理解这一点。
请发送您的想法和建议。谢谢!
答
两个实例都是StreamWriter
实例,但是您将一个实例分配给基类类型变量TextWriter
,这没关系。
由于接受基类TextWriter
的实例的XmlSerialize.Serialize
has an overload,这两个调用都可以并且具有相同的净效果。
你有足够的信息在和 –