#.net #textwriter
#.net #textwriter
Вопрос:
Я прохожу практический тест для экзамена 70-536. Ниже приведен скриншот. Желтым выделено то, что экзамен считает правильным ответом. Тот, у которого выбран переключатель, — это ответ, который я думал, что это был.
Обратите внимание на объяснение внизу, которое включает в себя утверждение:
Чтобы создать
StreamWriter
объект, вы должны использовать существующийStream
объект, такой как экземплярFileStream
.
Я думаю, что выбранный мной ответ является наиболее эффективным использованием, и я думаю, что утверждение, сделанное в объяснении, неверно. Очевидно, потому что код в моем выбранном ответе работал нормально.
Кто прав????
Комментарии:
1. Какой вопрос на вашем экзамене? Трудно выбрать правильный ответ, не зная вопроса.
2. «Вам нужно записать текст в файл. Какой из следующих примеров демонстрирует наиболее эффективный способ использования класса TextWriter?»
3. Не могу конкретно ответить на этот вопрос, но по моему опыту, эти практические тесты, как правило, представляют собой просто набор вопросов, заполняются человеком и на самом деле не предоставляются Microsoft. Я знаю, что в практических тестах, которые у меня были, когда я проходил сертификационный курс MCPD, было несколько неправильных ответов.
Ответ №1:
В выбранном вами ответе есть разница между C # и VB.NET версия. The 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. Спасибо, Дарин. Я только что заметил это. Я даже не смотрю на примеры VB. Я думаю, что в том, что касается C #, мой ответ был правильным. Согласны?
2. @Richard DesLonde, ну, учитывая тот факт, что у вас не было других вариантов, да, выбранный вами C # будет компилироваться. Правильно ли это — это другая история. Смотрите мое обновление.
3. Что касается вашего обновленного ответа, этот экзамен предназначен для .NET 2.0 (70-536), поэтому нет вопросов, которые
var
были бы приемлемыми . . .4. @Richard DesLonde, черт возьми, кто сегодня использует .NET 2.0 🙂 Я имею в виду, что даже если бы вам пришлось настроить таргетинг на .NET 2.0, вы могли бы использовать приличный компилятор C # (3.0), который поддерживает
var
ключевое слово. И в худшем случае заменитеvar
на тип, который у вас есть с правой стороны.5. @Darin: LOL Очень верно, но я хочу начать с нуля, чтобы убедиться, что мое понимание основательно. Плюс тот факт, что у многих моих клиентов все еще есть приложения на .NET 2.0, а у некоторых даже на .NET 1.0!!! Я бы также сдал все экзамены .net 2.0, но они будут прекращены очень скоро. 🙂
Ответ №2:
Они правы — вы не можете установить TextWriter равным экземпляру FileStream, поскольку FileStream не наследует от TextWriter — вам нужно использовать StreamWriter на основе FileStream, поскольку StreamWriter действительно наследует от TextWriter.
Комментарии:
1. Привет, Уилл. Вы смотрите на VB. Я смотрю на C #. 🙂 Я вижу, что вы правы в том, что касается VB, но примеры VB и C # совершенно разные в одном и том же ответе!
2. @Richard — Привет — выделенный ответ (ответ MS) «одинаковый» для обоих VB. Тем не менее, Net и C #. Конечно, тот факт, что в одном из других ответов два отличаются, кричит «этот ответ, вероятно, неправильный» (и это неправильно !!!!).
3. ЛОЛ, да, с этого момента я буду следить за этим. Но я думаю, что на реальных экзаменах вы получите только вопросы C #, верно? Потому что вы можете выбрать, на какой язык вы ориентируетесь?
4. Я ожидал бы, что вы получите только одно или другое — так что, я думаю, эта стратегия не работает. Возможно, вам нужно сообщить MS, что вы владеете несколькими языками, чтобы получить комбинированную работу по C # / VB? 🙂
5. @RichardDesLonde Правильно, по крайней мере, для экзаменов, которые я сдавал; вы выбираете, хотите ли вы, чтобы примеры были на VB или C # в начале экзамена.