MS Exam 70-536 Prep: Эффективное использование TextWriter - ответ на практическом тесте неправильный (я думаю)! - PullRequest
2 голосов
/ 15 мая 2011

Я сдаю практический тест на экзамен 70-536.Ниже приведен скриншот.Выделенный желтым цветом - то, что экзамен говорит, является правильным ответом.Ответ, который я выбрал, - это ответ, который я выбрал.

Обратите внимание на объяснение внизу, которое включает инструкцию:

Чтобы создать объект StreamWriter, вы должны использовать существующий объект Stream, например, экземпляр FileStream.

Я думаю, что ответ, который я выбрал, является наиболее эффективным, и я считаю, что высказанное в объяснении утверждение неверно.Очевидно, что код в моем выбранном ответе работал нормально.

Кто прав ????

enter image description here

Ответы [ 2 ]

2 голосов
/ 15 мая 2011

В выбранном вами ответе есть разница между версией 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");
}
0 голосов
/ 15 мая 2011

Они правы - вы не можете установить TextWriter равным экземпляру FileStream, поскольку FileStream не наследуется от TextWriter - вам нужно использовать StreamWriter, основанный на FileStream, поскольку StreamWriter делает наследованным отTextWriter.

...