aspnet webservice中的锯齿状数组输出

时间:2016-05-10 08:52:21

标签: c# asp.net web-services

我编写了简单的代码,在webservice上生成int的随机数组,我用html格式的几个按钮加入了它,但是我无法获得propper输出。每次我发送服务即时获取此输出在我的文本框“Macierze.myservice.ArrayOfInt []”。任何人都知道如何解决这个问题,并在我的文本框中获得完整的数组?

网络服务代码

[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();
    }

2 个答案:

答案 0 :(得分:3)

如评论中所述,您目前看到的是ToString方法的默认输出。这将发生在.NET中的所有对象上,它不会覆盖从ToString类继承的Object。当然,数组(包括锯齿状的数组)就是这类对象的一个​​例子。

我猜你的情况有点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) + "]"));

答案 1 :(得分:0)

对int [] []执行.ToString()不会自动输出其所有值。对于.NET中的几乎每个对象都是如此,除非.ToString()方法已被覆盖以输出值。

您必须遍历数组中的所有值并将它们添加到字符串中。与您首先生成数组的方式完全相同。

您可以编写扩展方法来生成所需的字符串。请注意,您不能将扩展方法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