perlでは、スプライス関数は既存の配列から新しい項目の配列を返し、同時にこれらの項目を既存の配列から削除します。コレクションのスプライス
my @newarry = splice @oldarray, 0, 250;
@newarray
今@oldarray
から250件のレコードが含まれていると@oldarray
は250件のレコードが少ないでしょう。
同様の機能を持つC#コレクションクラス、つまりArray、List、Queue、Stackに相当するものはありますか?これまでのところ、2つのステップが必要なソリューションのみを見てきました(return + remove)。
だけStack.Pop()
とあり
[TestClass]
public class ListTest
{
[TestMethod]
public void ListsSplice()
{
var lst = new List<string>() {
"one",
"two",
"three",
"four",
"five"
};
var newList = lst.Splice(0, 2);
Assert.AreEqual(newList.Count, 2);
Assert.AreEqual(lst.Count, 3);
Assert.AreEqual(newList[0], "one");
Assert.AreEqual(newList[1], "two");
Assert.AreEqual(lst[0], "three");
Assert.AreEqual(lst[1], "four");
Assert.AreEqual(lst[2], "five");
}
}
.NETコレクションクラスには直接的な同等物はありません。もちろん、+ removeを返す独自のヘルパーメソッドを書くこともできます。どのようにしてこの方法を使うつもりですか?おそらくPerlからパターンを運ぶのではなく、C#ishという方法があります。 – dtb
ありがとうございます - スプライン関数をリストに追加する拡張メソッドを作成しました。これはIEnumerablesをサポートするためにさらに一般化される可能性があります。 – SADeveloper
'Source.GetRange(Start、Size)'によって 'Source.Skip(Start).Take(Size).ToList()'を置き換えることができます。 –
Henrik