2017-01-29 2 views
-4

私のエラーは、次のとおりです。ここでオーバーフローの問題が

cs1501 No overload for method 'Write' takes 2 arguments

は、プログラム自体です。エラーはライターで発生します。

using System; 
using System.IO; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace ConsoleApplication3 
{ 
class Program 
{ 
    const string fileName = "Primes12345678910.txt"; 
    static void Main(string[] args) 
    { 
     int c = 1; 
     int a = 1; 
     int b = 1; 
     int olda = 1; 
     int oldb = 1; 
     while (true) 
     { 
      if (a * b == 1) 
      { 
       a = a + 1; 
      } 

      if (a * b == c) 
      { 
       Console.WriteLine("{0} is not prime.", c); 
       using (BinaryWriter writer = new    BinaryWriter(File.Open(fileName, FileMode.Create))) 
       { 
        writer.Write("{0}", c); 
       } 
      } 
     } 
    } 
} 
} 
+0

writer.Write(string.Format( "{0}"、c));を使用します。 – Thangadurai

+1

文字列とオブジェクトをとる 'BinaryWriter.Write'メソッドはありません。このようなメソッドを持つ 'StreamWriter'を探しているかもしれません。 – cubrr

+0

ここに実装しようとしていることを明確にすることはできますか?私はこのコードが不完全であるかどうかはわかりませんが、**コンパイルしたとしてもまだそれほど大したことはありません。 – EJoshuaS

答えて

1

機能BinaryWriter.Write(int value)は一個の引数を取るので、{0}を削除し、これは、それがどのように見えるかです:

using (BinaryWriter writer = new BinaryWriter(File.Open(fileName, FileMode.Create))) 
{ 
    writer.Write(c); 

    // Unless you want 'c' to be a string, then use 
    writer.Write(c.ToString()); 

    // You can also use StringFormat 
    writer.Write(string.Format("{0}", c)); 
} 

別のオプションは、それが何をサポートして@ScottChamberlainがStreamWriterを使用して、提案し何だろうあなたはStreamWriter.Write、やろうとしている。

using (StreamWriter writer = new StreamWriter(File.Open(fileName, FileMode.Create))) 
{ 
    writer.Write("{0}", c); 
} 
+1

これは 'c'の型に応じて非常に異なる動作をします。なぜなら、' 1'の 'int'なら' 0x00000001'と書くからです。同じ動作が必要な場合は、2バイトを使用して長さプレフィックスを書き込むため、 '0x000139'を書き込むwriter.Write(c.ToString())'を実行する必要があります。文字列 'UTF-16 ' 1 'は0x39である。しかし、コードを見ると、単にファイルに素数のリストを書き込もうとしているだけで、ファイルが作成モードで開かれているので、すべてのループを上書きしているので、演算子は単に 'StreamWriter'を使うと思います。 –

+0

@ScottChamberlain cはintです。そして、BinaryWriterは整数の引数をサポートしています。あなたのコメントをありがとう、私は答えに 'StreamWriter'を追加しました。 –

1

コンパイルエラーをよく見てください:

No overload for method 'Write' takes 2 arguments 

この場合、それはそれが言うことを正確に意味します。Writeメソッドは2つの引数をとりません。

他の人が示されてきたように、問題はここにある:

using (BinaryWriter writer = new    BinaryWriter(File.Open(fileName, FileMode.Create))) 
{ 
    writer.Write("{0}", c); 
} 

あなたは@BogDoeJoeが行う、あなたはフォーマット文字列を使用することを意図している場合、提案またはとして

writer.Write(c.ToString()); 

をしたいのいずれか

writer.Write(string.Format("{0}", c)); 

この場合、フォーマット文字列はかなり無意味です。

また、このコードが不完全であるかどうかはわかりませんが、実際にはあまり効果がありません。ループの最初の繰り返しでは、実際にはaが2に設定されます。その後は全く文字通り何もしません.a * b = 2c = 1なので、ifのステートメントは、最初の繰り返しの後でも真実になることはなく、コンソールに何も書き込むことはありません。

+1

ありがとうございました。はい、これは未完成です。これは、私が数分で作ったものです。 – IOLobster

関連する問題