As you must know, there’s no such thing as C# constant arrays - http://www.google.com/search?hl=en&q=c%23+const+array For example, the below code will not compile const int [] constIntArray = newint [] {2, 3, 4}; On the other hand, a static readonly will compile static readonly int [] constIntArray = new int[] {1, 2, 3}; But it’s of no use since even though cannot reassign the array itself, you can replace individual values. The readonly makes you think it cannot be changed, which is bad because you could end up wrong values at runtime. What I needed was an array that I couldn’t re-assign at run time. As usual, I was trying to avoid hard-coding something and in this case it was field names. I needed some way to work with field names so that even if the names or the order of the fields changed tomorrow, I could just change an enum and the constants and the rest of the code would work fine. Of course, I could simply do this public enum Fields { ItemId = 0, ShortDescription =