1

在 C# 3.0 中,framework 与 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

4 回答 4

6

因为文件名是string(显然)并且不能转换为Stream. 编译器假定第二个重载是您尝试使用的重载。假设它可能会说“无法将字符串转换为流”,但编译器不会按该顺序解析参数。

于 2011-02-21T16:25:04.847 回答
2

第二行需要不存在的构造函数 StreamWriter(string, Encoding) ,而不是存在的 StreamWriter(Stream, Encoding) 。

于 2011-02-21T16:24:24.743 回答
2

我假设变量“文件名”是一个字符串,因此它首先匹配第二个构造函数,然后在第二个参数上失败,将编码转换为布尔值。

于 2011-02-21T16:24:58.837 回答
1

filename是字符串,我想,不是流,所以第二个构造函数比第一个更可取。

于 2011-02-21T16:27:16.370 回答