Неверный аргумент в конструкторе StreamWriter? - PullRequest
1 голос
/ 21 февраля 2011

В C # 3.0, фреймворк против 3.0 (сборка mscorlib.dll, v2.0.50727) System.IO.StreamWriter имеет следующие конструкторы:

public StreamWriter(Stream stream, Encoding encoding);
public StreamWriter(string path, bool append, Encoding encoding);

Итак, код

Encoding enc = System.Text.Encoding.GetEncoding("iso-8859-1");
writer = new StreamWriter(filename, enc);
writer = new StreamWriter(filename, false, enc);

дает ошибку компиляции"Наилучшее совпадение перегруженного метода ... имеет недопустимые аргументы" ... "не может преобразовать из 'System.Text.Encoding' в 'bool' во второй строке.

Извините, не вопрос, скорее ошибка.

Ответы [ 4 ]

6 голосов
/ 21 февраля 2011

Поскольку имя файла - string (по-видимому) и не может быть преобразовано в Stream.Компилятор предполагает, что вторая перегрузка - это та, которую вы пытаетесь использовать.Он мог гипотетически сказать «не может преобразовать строку в поток», но компилятор не разрешает аргументы в этом порядке.

2 голосов
/ 21 февраля 2011

Я предполагаю, что переменная "filename" является строкой, поэтому сначала она соответствует 2-му конструктору, а затем по 2-му параметру преобразует кодировку в логическое значение.

2 голосов
/ 21 февраля 2011

Во второй строке потребуется конструктор StreamWriter (строка, кодировка), который не существует, а не StreamWriter (поток, кодировка), который существует.

1 голос
/ 21 февраля 2011

filename это строка, как я полагаю, а не Stream, поэтому второй конструктор предпочтительнее, чем первый.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...