1

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);

2行目に「最適なオーバーロードされたメソッドの一致...いくつかの無効な引数があります」...「「System.Text.Encoding」から「bool」に変換できません」というコンパイルエラーが発生します。

すみません、質問ではなく間違いです。

4

4 に答える 4

6

ファイル名はstring(明らかに)であり、に変換できないためStreamです。コンパイラは、2 番目のオーバーロードが使用しようとしているものであると想定します。仮説的には「文字列をストリームに変換できません」と言った可能性がありますが、コンパイラは引数をその順序で解決しません。

于 2011-02-21T16:25:04.847 に答える
2

2 行目は、存在する StreamWriter(Stream, Encoding) ではなく、存在しないコンストラクター StreamWriter(string, Encoding) を必要とします。

于 2011-02-21T16:24:24.743 に答える
2

変数「ファイル名」は文字列であると想定しているため、最初に2番目のコンストラクターに一致し、次にエンコーディングをブール値に変換する2番目のパラメーターで失敗します。

于 2011-02-21T16:24:58.837 に答える
1

filename私が推測するように、ストリームではなく文字列であるため、2番目のコンストラクターは最初のコンストラクターよりも望ましいです。

于 2011-02-21T16:27:16.370 に答える