2016-05-10 8 views
0

intのWebService上のランダムな配列を生成する簡単なコードを書いた、私はHTMLフォームのいくつかのボタンでそれに参加したが、私はプロンプトの出力を得ることができません。毎回、私のテキストボックス "Macierze.myservice.ArrayOfInt []"でこの出力を取得しています。誰も私がこれを解決し、テキストボックスで完全な配列を取得する方法を知っていますか? INT [] []すべての値を自動的に出力しないで.ToString()を実行aspnet webserviceでギザギザの配列出力

Webサービスコード

[WebMethod] 
    public int[][] GenerateMatrix(int column, int row) 
    { 
     Random rnd = new Random(); 
     int[][] matrix = new int[column][]; 
     for (int i = 0; i < matrix.Length; i++) 
     { 
      matrix[i] = new int[column]; 
      for (int j = 0; j < matrix[i].Length; j++) 
       matrix[i][j] = rnd.Next(1, 1000); 
     } 
     return matrix; 
    } 

ボタンコード

protected void Button1_Click(object sender, EventArgs e) 
    { 
     var serviceClient = new myservice.WebService1SoapClient("WebService1Soap"); 
     output.Text = serviceClient.GenerateMatrix(Convert.ToInt32(input1.Text), Convert.ToInt32(input2.Text)).ToString(); 
    } 
+0

を 'ジャグ配列のリターンに呼ばToString'だけで何が。ここにあなたにとって正しい出力は何ですか?私はかなりそれがいくつかのLINQで行うことができると確信しています – Andrei

+0

私はちょうどこのテキストボックスに表示されるWebサービスメソッドで生成された行列を取得したい。 [1 2 3 4] [5 6 7 8]と似ていますが、生成された数字の代わりにこのcomunicateを取得し続けます。 – Lobo

答えて

3

拡張メソッド上に読むことができ、何を、現在参照してToStringメソッドのデフォルトの出力です。これは、Objectクラスから継承されたToStringをオーバーライドしない.NETのすべてのオブジェクトで発生します。確かに、ギザギザを含む配列は、そのようなオブジェクトの例です。

私はあなたのケースのためのLINQの少しを推測し、String.Joinは簡単にかかわらず、トリックを行うことができます。

var matrix = serviceClient.GenerateMatrix(Convert.ToInt32(input1.Text), Convert.ToInt32(input2.Text)); 
output.Text = String.Join(" ", matrix.Select(a => "[" + String.Join(", ", a) + "]")); 
+0

ありがとう、私はC#で新しいと私は昨日からこれで苦労していた:) – Lobo

0

。 .ToString()メソッドが値を出力するために上書きされていない限り、.NETのほぼすべてのオブジェクトに対して同じことが行われます。

配列内のすべての値を反復処理して文字列に追加する必要があります。最初の場所で配列を生成したのとまったく同じ方法です。

あなたが望む文字列を生成する拡張メソッドを書くことができます。拡張メソッドToStringを呼び出すことはできません。既定のToStringは既に存在しています。コメントで述べたように

public static class ExtensionMethods 
{ 
    public static string ToText(this int[][] value) 
    { 
      StringBuilder sb = new StringBuilder(); 
      for (int i = 0; i < value.Length; i++) 
      {    
       for (int j = 0; j < value[i].Length; j++) 
        sb.AppendLine(value[i][j]); 
      } 
      return sb.ToString(); 
    } 
} 

あなたがここにhttp://www.dotnetperls.com/extension