webForumDet fria alternativet

Egen extension method på en IList<T> som skapar en array

.NET

3 svar · 513 visningar · startad av doggelito

Medlem sedan juni 20003 076 inlägg
Frågan#1

Hello,
Jag har försökt läsa mig till hur man skapar extension methods men hajjar inte riktigt! :l

Går det, och i så fall, kan nån vänlig själ leda mig i rätt riktning på hur man kan skapa en metod som gör om en IList<T> till en array (pga. att en IList inte har en sådan metod)?

Jag skulle vilja ha så här:

IList<Guid> list = new List<Guid>();
list.Add(Guid.NewGuid());
Guid[] guidArray = list.[B]ToArray()[/B];

och extension metoden lär konverteras från min gamla befintliga metod:

public static T[] ToArray<T>(IList<T> list)
{
      T[] array = new T[list.Count];
      for (int i = 0; i < array.Length; i++)
      {
           array[i] = (T)list[i];
      }

      return array;
}

(säkert har jag funderat på allt detta helt i onödan för det finns säkert något inbyggt i frameworket redan! ;))

Medlem sedan feb. 20002 300 inlägg
Medlem sedan maj 200010 687 inlägg
#3

Detta finns redan för IEnumerable. Och IList extendar IEnumerable.
Lägg bara till
using System.Linq;
och sen kan du skriva precis så som du skrivit... :)

Medlem sedan juni 20003 076 inlägg
#4

Ahh, det var så det var man gjorde.
Hade liksom det för mig långt inne i hjärnan men flera svar via googling sa att IList inte hade en sådan extension metod. Och delvis hade de väl rätt då också då när det är IEnumerable som har det! ;) Tack! :bire

257 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)