по крайней мере, использует массив в качестве резервного хранилища, поэтому для них это будет O (1)
ажется глупым вопросом, но я не нашел ответа, так что вот оно. :)
В обоих случаях вы получите исключение «вне допустимого диапазона», если не сможете проверить границы своей коллекции. Это просто предпочтение стиля кодирования?
И в случае, если кому-то нужен пример:
List<byte> myList = new List<byte>(){0x01, 0x02, 0x03};
byte testByte = myList.ElementAt(2);
против
byte testByte = myList[2];