在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'”。
对不起,不是问题,而是错误。
答案 0 :(得分:6)
因为文件名是string
(显然),无法转换为Stream
。编译器假定第二个重载是您尝试使用的重载。它可能假设“不能将字符串转换为Stream”,但编译器不会按此顺序解析参数。
答案 1 :(得分:2)
第二行需要构造函数StreamWriter(string,Encoding),它不存在,而不是存在的StreamWriter(Stream,Encoding)。
答案 2 :(得分:2)
我假设变量“filename”是一个字符串,因此它首先匹配第二个构造函数,然后在将第二个参数转换为布尔值时失败。
答案 3 :(得分:1)
filename
是字符串,正如我想的那样,不是Stream,所以第二个构造函数比第一个更优选。