Я пытаюсь выяснить, как я могу успешно изменить массив «только для чтения». Приведенный ниже код работает успешно, но я не совсем понимаю, почему разыменование массива private / readonly допустимо, как указано ниже:
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
MyClass myClass = new MyClass();
myClass.Time[5] = 5; // Why is this legal? How can I make it illegal?
}
}
public class MyClass
{
private readonly uint[] time;
public IList<uint> Time
{
get { return time; }
}
public MyClass()
{
time = new uint[7];
}
}
}
Как я отмечал выше, я ожидаю, что Time [5] будет незаконным из-за того, что в общедоступном IList Time нет установщика.
Как я могу изменить MyClass, чтобы убедиться, что не разрешено делать myClass.Time[5]
?
Примечание: Я уточнил цель этого вопроса, вначале мне было неясно, что намерение сделать это НЕЗАКОННЫМ. И я хочу понять, почему это законно, в первую очередь, как есть.