MS考试70-536准备:高效使用TextWriter - 练习测试答案是错误的(我认为)!

时间:2011-05-14 21:36:15

标签: .net textwriter

我正在参加70-536考试的练习考试。下面是截图。黄色突出显示的是考试所说的正确答案。选择单选按钮的那个是我认为的答案。

请注意底部的说明,其中包括声明:

  

要创建StreamWriter对象,您必须使用现有的Stream对象,例如FileStream的实例。

我认为我选择的答案是最有效的用法,我认为在解释中所作的陈述是错误的。很明显,因为我选择的答案中的代码工作正常。

谁是对的????

enter image description here

2 个答案:

答案 0 :(得分:2)

在你选择的答案中,C#和VB.NET版本之间存在差异。 VB.NET版本甚至不会编译,而C#是正确的。

这不会编译:

Dim tw as TextWriter = New FileStream("Hello.dat", FileMode.Create)

没关系:

TextWriter tw = new StreamWriter("Hello.dat");

最后一个答案是不可能的,因为TextWriter是一个抽象类,你不能直接实例化它。

但显然,您在真实应用程序中使用的正确答案甚至不在列表中。它将是:

using (var writer = new StreamWriter("Hello.dat"))
{
    writer.Write("Hello world");
}

或者如果您需要使用Stream

using (var stream = File.Create("Hello.dat"))
using (var writer = new StreamWriter(stream))
{
    writer.Write("Hello world");
}

答案 1 :(得分:0)

他们是对的 - 您不能将TextWriter设置为等于FileStream的实例,因为FileStream不从TextWriter继承 - 您需要使用基于FileStream的StreamWriter,因为StreamWriter 继承来自TextWriter。