Comment créer un tableau avec une séquence d’entiers en C #?

F # a des séquences qui permettent de créer des séquences:

seq { 0 .. 10 } 

Créez une séquence de nombres de 0 à 10.

Y a-t-il quelque chose de similaire en C #?

Vous pouvez utiliser Enumerable.Range(0, 10); . Exemple:

 var seq = Enumerable.Range(0, 10); 

MSDN page ici .

 Enumerable.Range(0, 11); 

Génère une séquence de nombres entiers dans une plage spécifiée.

http://msdn.microsoft.com/en-us/library/system.linq.enumerable.range.aspx

Vous pouvez créer une fonction simple. Cela fonctionnerait pour une séquence plus compliquée. Sinon, la Enumerable.Range devrait faire.

 IEnumerable Sequence(int n1, int n2) { while (n1 <= n2) { yield return n1++; } } 

Ma mise en œuvre:

  private static IEnumerable Sequence(int start, int end) { switch (Math.Sign(end - start)) { case -1: while (start >= end) { yield return start--; } break; case 1: while (start <= end) { yield return start++; } break; default: yield break; } } 

Si vous voulez énumérer une séquence de nombres ( IEnumerable ) de 0 à une end variable, essayez

 Enumerable.Range(0, ++end); 

Dans l’explication, pour obtenir une séquence de nombres de 0 à 1000, vous voulez que la séquence commence à 0 (en vous rappelant qu’il y a 1001 nombres entre 0 et 1000 inclus).


Si vous voulez une série linéaire illimitée, vous pouvez écrire une fonction comme

 IEnumerable Series(int k = 0, int n = 1, int c = 1) { while (true) { yield return k; k = (c * k) + n; } } 

que vous pourriez utiliser comme

 var ZeroTo1000 = Series().Take(1001); 

Si vous voulez une fonction que vous pouvez appeler à plusieurs resockets pour générer des nombres incrémentiels, vous voudrez peut-être quelque chose comme.

 using System.Threading; private static int orderNumber = 0; int Seq() { return Interlocked.Increment(ref orderNumber); } 

Lorsque vous appelez Seq() il renvoie le numéro de commande suivant et incrémente le compteur.