0

int および string 配列の内容を出力して、Web サービスをすばやくデバッグしようとしています。これを1つの方法で行う方法はありますか?

私は試した

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

1 つのメソッドでこれを行う方法はありますか、それとも 2 つの別々のメソッドを作成する必要がありますか?


もちろん、配列を使用する必要があるかどうかは疑問ですが、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

これを行うにはいくつかの方法があります。

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 に答える
1
private string PrintObjects<T>(IEnumerable<T> objs)
{
    return string.Join(" ", objs.Select(o => o.ToString()).ToArray());
}
于 2009-05-13T13:37:43.540 に答える