4

例から得た VB.NET の ASP.NET には、次の 2 行があります (C# の場合は、世界の 'Dim' を 'var' に置き換えるだけです)。

 Dim tmpFile = Path.GetTempFileName()
 Dim tmpFileStream = File.OpenWrite(tmpFile)

File.OpenWrite(tmpFile)「アクセス可能な「ファイル」がこの数の引数を受け入れないため、オーバーロードの解決に失敗しました」というエラーが表示されます。このエラーが発生する理由を説明できる人はいますか? 私はドキュメントを見てみましたが、それを理解できないようです。ありがとうございました。

4

2 に答える 2

7

エラー メッセージがFileではなくを指定していることに注意してくださいOpenWriteFileよりも優先度の高いコンテキストが他にあるようですSystem.IO.File。これがおそらくエラーの原因です。ここで完全修飾名を使用してみてください

Dim tmpFileStream = System.IO.File.OpenWrite(tmpFile)
于 2012-11-15T17:47:23.707 に答える
1

次の行をコード ファイルの先頭に追加します。

Imports System.IO

また、ダニエルが示唆したように、コードをより明確にすることで、たとえば次のようにタイプを指定すると役立ちます。

Dim tmpFile As String = Path.GetTempFileName()
Dim tmpFileStream As FileStream = File.OpenWrite(tmpFile)

VB の最新バージョンでは、タイプが自動的に推測されるため、指定していなくても tmpFile がStringタイプ変数になります。ただし、古いバージョンの VB では、基本Object型にするだけであり、その場合、どのオーバーロードを使用するかを判断できません。

于 2012-11-15T17:45:46.217 に答える