方法を汎用C#の配列のコンテンツのプリンタを受け入れるオブジェクトとプリミティブ?

StackOverflow https://stackoverflow.com/questions/857976

  •  21-08-2019
  •  | 
  •  

質問

私はだけでも素早くデバッグ、webservice印刷の内容をintと文字列の配列になります。直しとかは出来ないんですかこの一つの方法は?

てみました

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

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

    return sb.ToString();
}

このchokesがどのように送信するprimative配列(int[])によるのでないオブジェクトです。

として不思議などを送信するintの方法に以下の作品

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

直しとかは出来ないんですかこの一つの方法と思っている男を二つの別々の方法を教えてください。


もちろんのかどうかを必ず配列ですべては疑問ですが、webサービスに立っています。

参照:

役に立ちましたか?

解決

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

他のヒント

このような何かを試してみてください。

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

なぜあなたは、配列を選んだのですか?あなたのコードは、配列の特定のプロパティのどれに依存し、だけではなく、オブジェクトのリストを見ています。 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();
}
private string PrintObjects<T>(IEnumerable<T> objs)
{
    return string.Join(" ", objs.Select(o => o.ToString()).ToArray());
}

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

あなたは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();
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top