整数配列を要素をインラインで列挙する文字列に変換する最も簡単な方法は何ですか? 変換を行う無名関数のようなものを考えています。
var array = new int[] { 1, 2 }
var s = string.Format("{0}",
new []
{ /*inline transform array into the string "1, 2"*/ });
整数配列を要素をインラインで列挙する文字列に変換する最も簡単な方法は何ですか? 変換を行う無名関数のようなものを考えています。
var array = new int[] { 1, 2 }
var s = string.Format("{0}",
new []
{ /*inline transform array into the string "1, 2"*/ });
を使用しstring.Join
ます。.NET 3.5 以前では、最初に文字列配列に変換する必要があります。.NET 4 では、オーバーロードを取るIEnumerable<T>
. したがって、バージョンに応じて:
.NET 2.0 または 3.0 / C# 2:
string s = string.Join(", ",
Array.ConvertAll(delegate(int x) { return x.ToString(); });
.NET 2.0 または 3.0 / C# 3:
string s = string.Join(", ", Array.ConvertAll(x => x.ToString());
.NET 3.5 / C# 3:
string s = string.Join(", ", array.Select(x => x.ToString()).ToArray());
(または、必要に応じて .NET 2.0 で動作するバージョンを使用してください)。
.NET 4:
string s = string.Join(", ", array);
(私は今日までそれを見たことがありませんでした!)
String.Join を使用すると、.NET 4.0 の場合:
var s = String.Join(", ",array);
これが機能するのは、String.Join に IEnumerable<T> を受け取るオーバーロードが含まれるようになったためです。
3.5の場合、使用できます
var s = String.Join(", ", array.Select(n => n.ToString()).ToArray());
以前の .NET バージョンについては、Jon Skeets のより完全な回答を参照してください。
.Net 4 を使用している場合:
var array = new int[] { 1, 2 };
var s = String.Join(", ", array);
オーバーロードがString.Join<T>(string, IEnumerable<T>)
追加されました:)
ReSharper は私に次のようなものを与えます:
public static string EnumerateToString(this int[] a, string separator)
{
return a.Aggregate("", (current, i) => current + i.ToString(separator));
}