3
string.Concat(new[] { 'a', 'b', 'c' });
戻り.NET 4+上、リターン"System.Char[]"
string.Concatは
3.5 .NET には、ここにバグがありながら3.5 .NETおよび.NET 4+上で動作が異なりますか?
string.Concat(new[] { 'a', 'b', 'c' });
戻り.NET 4+上、リターン"System.Char[]"
string.Concatは
3.5 .NET には、ここにバグがありながら3.5 .NETおよび.NET 4+上で動作が異なりますか?
違いは、.NET 4では、クラスにString.Concat<T> Method (IEnumerable<T>)
オーバーロードを追加した点です。
.NET 4以前では、値型配列をstring.Concat()
に渡すと、配列は単純なオブジェクトとして解釈されます。 Concat()
メソッドはToString()
を呼び出し、ビオラはSystem.Char[]
を取得します。
.NET 4をオンにすると、他のオーバーロードに一致しないメソッドに渡されたIEnumerable<T>
は、新しいオーバーロードを取得します。 IEnumerable<T>
(この場合はIEnumerable<char>
)の各要素にはToString()
が呼び出され、これらの新しい各string
の値が連結されます。