2017-02-25 23 views
0

私の質問は、C#でPythonの配列のような配列をたどる方法があるかどうかです。パイソンC#での配列のトラバーサル

arr = [1 , 2, 3 , 4, 5] 
print (arr[3:]) 
arr[3:] = [7, 8] 
print (arr[3:]) 

に例えば

は私の出力与える[4、5]、次に[7,8]。

C#にもソートの何かが存在するかどうかは疑問でした。私はMSDNのマイクロソフトやその他のリンクでほとんどのドキュメントを調べましたが、従来のforループと各ループの両方が見つかりました。私はそれを逃したと思っていたかもしれません。

答えて

2

ません...

print (arr[3:]) 

のC#では、配列のサブセットを取得するための短い表記はありません。

arr[3:] = [7, 8] 

と他の配列と配列の一部を置換するための短い表記法が存在しない(又は別の配列への配列をコピーするため)

のサブセットのビューを作成するためArraySegment<T>クラスがあります配列を使用するか、LINQ Skip()/Take()を使用して同様の処理を行うことができます。まだ短い表記はなく、コピー/置換はありません。

+0

よしおかげで同様のことを行うことができます。私はループに固執します。 ArraySliceの情報をありがとうが、私は円形の配列の回転の問題をやっているので、私はいくつかのコピーを行う必要があります。今後の使用の可能性がある場合は、ArraySliceへの参照を保持します。 –

+0

@HaroonRamay配列スライスをC#7.0に追加することについての最初の議論がありましたが、そのアイデアは放棄されたと思います。 – xanatos

+0

今後のエディションでは、人生がもっと楽になると思うので、実際に追加してもらいたいと思っています。また、C#の将来のエディションについてディスカッションが閲覧できるリンクを指しておいてもかまいません。 –

2

あなたは機能アプローチ

var arr = new int[]{1 , 2, 3 , 4, 5}; 
var arr2 = arr.Skip (2).ToArray(); 
var arr3 = arr.Take (3).Concat(new int[]{7,8}).ToArray(); 


Console.WriteLine (String.Join(",",arr)); 
Console.WriteLine (String.Join(",",arr2));  
Console.WriteLine (String.Join(",",arr3));  

出力に

1,2,3,4,5 
3,4,5 
1,2,3,7,8 
+0

ありがとうございました、あなたの例は構文上の問題を多大に助けてくれました。遅れて申し訳ありませんが、私は学校の仕事と遅滞に巻き込まれました。 –