Thursday 18 April 2019

.net - Array versus List: When to use which?



MyClass[] array;
List list;


What are the scenarios when one is preferable over the other? And why?


Answer



It is rare, in reality, that you would want to use an array. Definitely use a List any time you want to add/remove data, since resizing arrays is expensive. If you know the data is fixed length, and you want to micro-optimise for some very specific reason (after benchmarking), then an array may be useful.



List offers a lot more functionality than an array (although LINQ evens it up a bit), and is almost always the right choice. Except for params arguments, of course. ;-p



As a counter - List is one-dimensional; where-as you have have rectangular (etc) arrays like int[,] or string[,,] - but there are other ways of modelling such data (if you need) in an object model.



See also:





That said, I make a lot of use of arrays in my protobuf-net project; entirely for performance:




  • it does a lot of bit-shifting, so a byte[] is pretty much essential for encoding;

  • I use a local rolling byte[] buffer which I fill before sending down to the underlying stream (and v.v.); quicker than BufferedStream etc;

  • it internally uses an array-based model of objects (Foo[] rather than List), since the size is fixed once built, and needs to be very fast.



But this is definitely an exception; for general line-of-business processing, a List wins every time.


No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...