StreamWriter构造函数中的参数无效?

时间:2011-02-21 16:19:50

标签: c# constructor streamwriter

在C#3.0中,框架,与3.0(程序集mscorlib.dll,v2.0.50727) System.IO.StreamWriter有a.o.以下构造函数:

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 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:2)

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

答案 2 :(得分:2)

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

答案 3 :(得分:1)

filename是字符串,正如我想的那样,不是Stream,所以第二个构造函数比第一个更优选。