Заинтересованные, есть подходы, имеет какие-либо отличия.
Итак, я создал два фрагмента.C# .First() vs [0]
Snippet A
List<int> a = new List<int>();
a.Add(4);
a.Add(6);
int b = a.First();
и
Snippet B
List<int> a = new List<int>();
a.Add(4);
a.Add(6);
int b = a[0];
В IL мы доверяем, так
Snippet A IL
IL_0000: nop
IL_0001: newobj System.Collections.Generic.List<System.Int32>..ctor
IL_0006: stloc.0 // a
IL_0007: ldloc.0 // a
IL_0008: ldc.i4.4
IL_0009: callvirt System.Collections.Generic.List<System.Int32>.Add
IL_000E: nop
IL_000F: ldloc.0 // a
IL_0010: ldc.i4.6
IL_0011: callvirt System.Collections.Generic.List<System.Int32>.Add
IL_0016: nop
IL_0017: ldloc.0 // a
IL_0018: call System.Linq.Enumerable.First
IL_001D: stloc.1 // b
IL_001E: ret
и
Snippet B IL
IL_0000: nop
IL_0001: newobj System.Collections.Generic.List<System.Int32>..ctor
IL_0006: stloc.0 // a
IL_0007: ldloc.0 // a
IL_0008: ldc.i4.4
IL_0009: callvirt System.Collections.Generic.List<System.Int32>.Add
IL_000E: nop
IL_000F: ldloc.0 // a
IL_0010: ldc.i4.6
IL_0011: callvirt System.Collections.Generic.List<System.Int32>.Add
IL_0016: nop
IL_0017: ldloc.0 // a
IL_0018: ldc.i4.0
IL_0019: callvirt System.Collections.Generic.List<System.Int32>.get_Item
IL_001E: stloc.1 // b
IL_001F: ret
Отрывок B производится одна команда более IL, но подойти быстрее в конец?
Я лично предпочитаю использовать 'First()', поскольку он более читабельен. – Sweeper
[Если у вас есть две лошади, и вы хотите знать, какая из них быстрее, чем расы ваших лошадей. Не пишите краткие описания лошадей, публикуйте их в Интернете и спрашивайте случайных незнакомцев, чтобы угадать, что быстрее!] (Http://ericlippert.com/2012/12/17/performance-rant/) – Rawling
Хороший совет , Я найду способы расы их. –