« Tableaux » : différence entre les versions
Apparence
Ligne 50 : | Ligne 50 : | ||
if (Array.IndexOf(monTableau, element) > -1) | if (Array.IndexOf(monTableau, element) > -1) | ||
</kode> | |||
= [https://docs.microsoft.com/en-us/troubleshoot/dotnet/csharp/use-icomparable-icomparer Sort] = | |||
<kode lang='cs'> | |||
// sort the array by absolute value | |||
Array.Sort(ints, (i1, i2) => | |||
{ | |||
var a1 = Math.Abs(i1); | |||
var a2 = Math.Abs(i2); | |||
if (a1 > a2) | |||
return 1; | |||
else if (a1 < a2) | |||
return -1; | |||
else | |||
return 0; | |||
}); | |||
Array.Sort(ints, new IntAbsoluteValueComparer ()); | |||
private class IntAbsoluteValueComparer : IComparer | |||
{ | |||
int IComparer.Compare(object a, object b) | |||
{ | |||
var a1 = Math.Abs((int)a); | |||
var a2 = Math.Abs((int)b); | |||
if (a1 > a2) | |||
return 1; | |||
if (a1 < a2) | |||
return -1; | |||
else | |||
return 0; | |||
} | |||
} | |||
</kode> | </kode> | ||
Version du 5 octobre 2020 à 09:04
Déclaration
// il faut spécifié le type (string[]) pour pouvoir utiliser cette écriture
string[] strArray = { "string1", "string2" };
var strArray = new [] { "string1", "string2" };
var strArray = new [,]
{
{ "string11", "string12" },
{ "string21", "string22" }
};
var strArray = new string[10];
// tableau vide
var strArray = Array.Empty<string>();
|
Convertir explicitement un tableau en IEnumerable<T>
Un cast implicite existe en un tableau et un IEnumerable<T>.
Néanmoins dans certain cas on souhaite explicitement caster le tableau en IEnumerable<T>.
// Exemple de cas ou l'on souhaite explicitement caster le tableau en IEnumerable<T>
Methode(IEnumerable<int> items) {...}
Methode(params int[] items) {...}
int[] array = {1, 2};
Methode(array); // appel de la seconde occurence : Methode(params int[] items)
// pour pouvoir appeler la première occurence : Methode(IEnumrable<int> items)
// il faut explicitement caster le tableau en IEnumerable<T>
IEnumerable<int> enumerable = array.AsEnumerable();
IEnumerable<int> enumerable = (IEnumerable<int>)array;
IEnumerable<int> enumerable = array.Cast<int>();
// performance pour la convertion de int[] en IEnumerable<int> sur 1000000 passes :
// 0.032s items.AsEnumerable()
// 0.321s (IEnumerable<int>)items
// 0.492s items.Cast<int>()
|
IndexOf / Contains
int index = Array.IndexOf(monTableau, element);
// test si un élément est présent dans le tableau
using System.Linq;
if(monTableau.Contains(element))
if (Array.IndexOf(monTableau, element) > -1)
|
Sort
// sort the array by absolute value
Array.Sort(ints, (i1, i2) =>
{
var a1 = Math.Abs(i1);
var a2 = Math.Abs(i2);
if (a1 > a2)
return 1;
else if (a1 < a2)
return -1;
else
return 0;
});
Array.Sort(ints, new IntAbsoluteValueComparer ());
private class IntAbsoluteValueComparer : IComparer
{
int IComparer.Compare(object a, object b)
{
var a1 = Math.Abs((int)a);
var a2 = Math.Abs((int)b);
if (a1 > a2)
return 1;
if (a1 < a2)
return -1;
else
return 0;
}
}
|
Tableau de string → string
string s = String.Join(",", myStringArray));
|