Please see the code below:

```
public class Program
{
    private static void Main()
    {
        var c = new MonthClass();
        string[] months = (string[])c.GetMonths();
        months[0] = "Thursday";

        var d = c.GetMonths();
        Console.WriteLine(d.First());
    }
}

public class MonthClass
{
    private readonly string[] _months =
    {
        "January", "February", "March", "April","May","June","July",
        "August","September", "October", "November","December"
    };

    public IEnumerable<string> GetMonths() => _months;
}

```

Notice that `MonthClass._months` is private and read only. However, the second call to `GetMonths` returns `Thursday` as the first element of the array instead of `January`.

How am I able to change the value of a private read only member outside of `MonthClass` and how can I prevent this?

After reading the answers and doing my own research. I believe the following will resolve the issue:

```
private readonly string[] _months =
{
    "January", "February", "March", "April","May","June","July",
    "August","September", "October", "November","December"
};

public IEnumerable<string> GetMonths
{
    get { foreach (var month in _months) yield return month; }
}

```