Cela créera un objet tableau vide. Il s'agit toujours d'un objet parfaitement valide - et qui occupe une quantité non nulle d'espace en mémoire. Il connaîtra toujours son propre type, et le nombre d'éléments - il n'aura simplement aucun élément.
Les tableaux vides sont souvent utiles en tant que collections vides immuables : vous pouvez les réutiliser à l'infini ; les tableaux sont intrinsèquement mutables mais uniquement en termes de leur éléments ... et ici nous n'avons aucun élément à modifier ! Comme les tableaux ne sont pas redimensionnables, un tableau vide est aussi immuable qu'un objet peut l'être en .NET.
Notez qu'il est souvent utile d'avoir un tableau vide au lieu d'une référence nulle : les méthodes ou les propriétés retournant des collections devraient presque toujours avoir une référence nulle. toujours renvoient une collection vide plutôt qu'une référence nulle, car cela permet d'assurer la cohérence et l'uniformité - plutôt que de rendre les chaque l'appelant vérifie la nullité. Si vous voulez éviter d'allouer plus d'une fois, vous pouvez utiliser :
public static class Arrays<T>
{
private static readonly T[] empty = new T[0];
public static readonly T[] Empty { get { return empty; } }
}
Alors vous pouvez simplement utiliser :
return Arrays<string>.Empty;
(ou autre) lorsque vous avez besoin d'utiliser une référence à un tableau vide d'un type particulier.
1 votes
C'est très utile lorsque vous avez besoin d'un IEnumerable<T> vide (généralement pour les tests).
8 votes
Enumerable.Empty<...>
est encore mieux.