Q:

public static readonly field vs getter for a lookup list

I'm choosing between two implementations for a lookup (readonly) list of strings.
With getter:
public static List<string> MyList { get { return myList; } }
private static readonly List<string> myList = new List<string>
{
    "Item 1", "Item 2", "Item 3"
};

Or simply:
public static readonly List<string> MyList = new List<string>
{
    "Item 1", "Item 2", "Item 3"
};

I would go for the second one for simplicity, but just reading from the code it looks like the second implementation will create a new List every time, whereas in the first implementation there's no such recurring overhead.
Is that the right way to think about it? Or are there better implementations for what I am trying to achieve?
Thanks!

A:

Personally I'd recommend using properties just because they're more flexible. For example you could implement lazy loading of your collection behind your property, which you can't do with a field.
However, there's a much bigger problem with your code. Read only fields and read only properties only ensure that the reference MyList cannot be reassigned to another list. But it's important to realize that neither of these options actually makes the list itself read only. 
In both cases there's nothing stopping some other code from calling:
MyClass.MyList.Clear();
MyClass.MyList.Add("Foo");

I'd strongly recommend something like this:
public static IList<string> MyList { get { return myList; } }
private static readonly ReadOnlyCollection<string> myList = 
    new ReadOnlyCollection<string>(new[]
    {
        "Item 1", "Item 2", "Item 3"
    });

