2017-12-29 8 views
3
string.Concat(new[] { 'a', 'b', 'c' }); 

戻り.NET 4+上​​、リターン"System.Char[]"string.Concatは

3.5 .NET には、ここにバグがありながら3.5 .NETおよび.NET 4+上で動作が異なりますか?

答えて

5

違いは、.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の値が連結されます。

関連する問題