C# dizisindeki bir dizinin kuyruğunu almanın en kolay yolu nedir? tüm ancak ilk unsur. I() .ToArray çağırarak mümkün olduğunca kaçınmak ve .NET yerine IEnumerable<T>
kullanarak sadık kalacağınaDizinin kuyruğunu alın
cevap
var myArray = GetSomeArray();
myArray = myArray.Skip(1).ToArray();
Not.
Ancak, yukarıdaki gibi ToArray'ı çağırırsanız, Array.Copy'yi kullanmak çok daha verimlidir, çünkü ToArray'ın diziyi uzunluk-1'de başlatma girişiyle ilgili yeterince bilgiye sahip olacağına inanmıyorum. – Josh
@Josh: Bu doğrudur (ToArray'ın bir "List" i dahili olarak oluşturup "ToArray" ı * bu * ile çağırmak), ama eğer ToArray'ı hiç çağırmamak daha iyi olurdu. zorunda değildi. –
var array1 = new int[] { 1, 2, 3, 4, 5, 6 };
var array2 = new int[array1.Length - 1];
Array.Copy(array1, 1, array2, 0, array2.Length);
// array2 now contains {2, 3, 4, 5, 6}
Düzenleme: Bu tümüyle diziler kullanmaktan kaçınmak anlamına gelir çünkü Joel Coehoorn cevabı, daha iyidir!
Lol bana eski okul der, ama hey geçerli!
for(int i = 1; i<array.length;i++)
{
array2[i-1]=array[i];
}
: P
ya da bir yöntem vardı ve sadece o sadece kuyruk ile ne yapmak istediğinize bağlıdır, onları aramak gerekirse bunları verim verebilir.
for(int i = 1; i<array.length;i++)
{
yield return array[i];
}
Ben codeka'nın cevabını tercih ederim, çünkü çok basit ve muhtemelen en etkili yöntemlerden biri. Ancak, gördüğünüz gibi, ihtiyacınız olduğunda uygulamak en basit olanı değil.
Bir uzantı yöntemi olarak çok benzer bir şey var, bu yüzden SubArray'ı çağırabilir ve bir dizede Substring gibi davranacaktır.
şey gibi:
public static T[] SubArray<T>(this T[] array, int startIndex, int length)
{
// various null, empty, out of range checks here
T[] returnArray = new T[length];
Array.Copy(array, startIndex, returnArray, 0, length);
return returnArray;
}
var array1 = new[] { 1, 2, 3, 4, 5 };
var arrays2 = array1.SubArray(2, 3);
Aşağıdaki gibi birkaç diğer aşırı yükleri hayata geçirebileceğini:
public static T[] SubArray<T>(this T[] array, int startIndex)
{
// null check here
return SubArray(array, startIndex, array.Length - startIndex);
}
using System.Linq;
var array = new [] { 1, 2, 3, 4 };
var tail = array.Reverse().Take (array.Length - 1).Reverse();
- 1. Dizinin her n öğelerini alın
- 2. Çerçeve iş kuyruğunu oynatma
- 3. PS: Dizinin bir dizini içinde dizin alın
- 4. C# tanımadığı dizinin yerini ID ile alın
- 5. gelen döndüren bir dizinin N. elemanı alın "string_to_array()" fonksiyonu
- 6. Laravel 5 için veritabanı kuyruğunu nasıl kurarsınız?
- 7. Kaynak kuyruğunu araya getirmeden arayanı nasıl kullanabilirim?
- 8. Mesaj göndermek için Laravel'in Kuyruğunu Kullanma
- 9. Birkaç işlem arasında bir sonuç kuyruğunu paylaşma
- 10. node.js olay kuyruğunu ve process.nextTick'i anlama
- 11. pascal dizinin dosya ve dizinin
- 12. Bir dizinin
- 13. PHP - dizinin
- 14. Swift, dizinin
- 15. ESLint, dizinin
- 16. foldRight kuyruğunu tekrarlamak için devamlılık kullanmak mümkün mü?
- 17. Başka bir dizinin içindeki bir dizinin Access Değeri
- 18. Bir dizinin öğelerini Javascript'teki başka bir dizinin diziniyle nasıl karşılaştırılır?
- 19. Bir 2B dizi boyutu alın
- 20. Dizinin uzunluğu JSON.Net
- 21. dizisini bekliyor; dizinin
- 22. Diziyle iki dizinin birleştirilmesi
- 23. TypeError: Bir dizinin
- 24. dizinin varsayılan analizörü
- 25. Bir dizinin shellprint
- 26. s3cmd Dizinin tamamını incele
- 27. Dizinin uzunluğu nasıl artırılır
- 28. Sayısal dizinin çevresini hesapla
- 29. Dizinin genel dizinlerini kaldırın
- 30. Dizinin içeriği (php)
Sorunuzun çeşitli yorumlara vardır: Dizinin bir kopyasını istiyorsun elementler? İlk diziyi atlamak için orijinal diziyi tekrarlamak ister misin? –