2017-02-06 14 views
0

私は最初のC#プログラムを作成しようとしています。なぜこのエラーが発生しているのか誰かが説明できますか?宣言されたときにはすべて型がありますが、どこからvoidが来ていますか?私が重要な場合はhttps://repl.it/languages/csharpにコードを書いています。voidをリストに変換できません

using System; 
using System.Linq; 
using System.Collections.Generic; 
class MainClass { 
    public static void Main (string[] args) { 
    List<string> mylist = new List<string>() { "2","1","2","3","3","4" }; 

    mylist=mylist.Sort(); 

    foreach(var item in mylist) 
    { 
     Console.Write(item.ToString()); 
    } 
    } 
} 

エラー:

Cannot implicitly convert type `void' to `System.Collections.Generic.List<string>' 
+1

'Sort()'がインプレースです。結果を割り当てる必要はありません。 – Borgleader

+0

フレームワーク内のほとんどのものは変更可能であるため、元のオブジェクトを変更するメソッドは、変更されるオブジェクトではなくボイドを返す傾向があります。文字列は、この例外として認識されています。 – Will

+0

@Will配列を例外として呼び出す方が正確です。文字列は、基本データ型として配列を使用するため、文字列に含まれます。 – Abion47

答えて

6

List<T>.Sortは、を実際に修正しているため、voidを返します(新しいコレクションは返されません)。したがって、メソッドの戻り値をListに代入するのはコンパイルエラーです。

元のコレクションを変更しないソートが必要な場合は、結果を熱心に列挙するには、OrderByToListを使用することを検討してください。

2

mylist.Sort();Listを返さない、それはあなたがリストに割り当てるべきではありません、voidを返します。 Sortに電話した後、あなたのリスト全体が既にソートされています。

関連する問題