0

我只是想通过打印出 int 和 string 数组的内容来快速调试 web 服务。有没有办法用一种方法做到这一点?

我试过

public static string ArrayToString(object[] array)
{
    StringBuilder sb = new StringBuilder();

    foreach (Object item in array)
    {
        sb.Append(item.ToString());
        sb.Append(" ");
    }

    return sb.ToString();
}

但是当我尝试向它发送一个原始数组(int [])时,这会窒息,因为它不是一个对象。

我觉得很奇怪,因为将 int 发送到下面的方法有效

static void PrintObject(object obj)
{
    Console.WriteLine(obj.ToString());
}

有没有办法用一种方法做到这一点,还是我只需要手动创建两个单独的方法?


当然,我是否应该使用数组是有问题的,但是 Web 服务已经到位。

也可以看看:

4

5 回答 5

4

尝试这样的事情:

static String toString<T>(IEnumerable<T> list)
{
    StringBuilder sb = new StringBuilder();

    foreach (T item in list)
    {
        sb.Append(item.ToString());
        sb.Append(" ");
    }

    return sb.ToString();
}

T编译器会很高兴地通过您传入的列表的类型来推断类型,如下所示:

toString(new int[] { 1, 2, 3 });
toString(new String[] { "1", "2", "3" });
于 2009-05-13T13:40:25.453 回答
4
public static string ArrayToString<T>(T[] array)
{
   StringBuilder sb = new StringBuilder();

    foreach (T item in array)
    {
        sb.Append(item.ToString());
        sb.Append(" ");
    }

    return sb.ToString();
}

然后

int[] x = new int[] { 1, 2, 3 };

string[] y = new string[] { "a", "b", "c" };

Console.WriteLine(ArrayToString(x));
Console.WriteLine(ArrayToString(y));
于 2009-05-13T13:43:38.523 回答
2

为什么选择阵列?您的代码不依赖于数组的任何特定属性,而只是看到一个对象列表。似乎 IEnumerable 将是一个更好的选择,并且几乎允许任何对象集合

public static string ArrayToString(IEnumerable source)
{
    StringBuilder sb = new StringBuilder();

    foreach (Object item in source)
    {
        sb.Append(item.ToString());
        sb.Append(" ");
    }

    return sb.ToString();
}
于 2009-05-13T13:42:48.133 回答
1
private string PrintObjects<T>(IEnumerable<T> objs)
{
    return string.Join(" ", objs.Select(o => o.ToString()).ToArray());
}
于 2009-05-13T13:37:43.540 回答
1

有几种方法可以做到这一点。

如果你有 Linq,你可以做

int[] foo = new int[] {1,2,3,4};
ArrayToString(foo.Cast<Object>().ToArray());

然后发送。

或者,您可以制作一个通用的扩展方法

public static string ToString<T>(this IEnumerable<T> val)
{
    StringBuilder sb = new StringBuilder();
    foreach(var item in val) 
    {
       sb.Append(item.ToString());
       sb.Append(" ");
    }
    return sb.ToString();
}
于 2009-05-13T13:46:34.650 回答