我编写了简单的代码,在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();
}
答案 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