2016-12-10 4 views
-1

誰でも私のことを説明できますか?C#、.NET、Stringクラス

私はConcatメソッドを呼び出しましたが、Stringは非静的キーワードを持つConcatメソッドを持っていません。

public static String Concat(object arg0); 
public static String Concat(IEnumerable<String> values); 
public static String Concat(params String[] values); 
public static String Concat(params object[] args); 
public static String Concat(String str0, String str1); 
public static String Concat(object arg0, object arg1); 
public static String Concat(String str0, String str1, String str2); 
public static String Concat(object arg0, object arg1, object arg2); 
public static String Concat(String str0, String str1, String str2, String str3); 
public static String Concat(object arg0, object arg1, object arg2, object arg3); 
public static String Concat<T>(IEnumerable<T> values); 

これはStringクラスにあるすべてのConcatオーバーロードされたメソッドです。

それはすべて私が呼んでいるものをメソッド静的だ場合は、連結方式のための任意のオーバーロードされたメソッドは非staticキーワードで存在しない

答えて

4

System.Linqを入力した場合、拡張方法Concat<char>が表示されます。これはSystem.StringIEnumerable<char>インターフェイスを実装しており、そのタイプにLINQ拡張メソッドが定義されているためです。

1

あなたは完全なコードを提供していないが、私はあなたがEnumerable.Concat<char>を起動している疑いがあります、汎用extension methodSystem.Linq.Enumerableであり、IEnumerable<T>である。 stringIEnumerable<char>を実装しているため、これは有効です。たとえば:

IEnumerable<char> sequence = "abc".Concat("def"); 
foreach (var element in sequence) 
{ 
    Console.WriteLine(element); // Prints a, then b, then c, then d, then e, then f 
} 

sequenceことはない文字列です。