Я считаю, что в C# вы можете объявлять переменные как const
. static
, а также, если вы чувствуете в этом необходимость.
http://msdn.microsoft.com/en-us/library/e6w8fe1b(VS.71).aspx
Я подозреваю, что первое предложение вашего вопроса отвечает на него.
const выполняет подстановку значения во время компиляции, где бы оно ни использовалось, и поэтому не имеет никакого значения во время выполнения. В целом, то, что вы предлагаете для объектов const, будет очень трудно определить компилятору (будет ли метод модифицировать объект или нет). Ваше предложение использовать ключевое слово const в качестве модификатора доступа также возлагает бремя на автора, и вы все еще остаетесь с проблемой проверки того, изменяет или не изменяет что-то объект. Кроме того, вы навязываете объекту что-то, что не имеет значения во всех контекстах. Что значит, если метод const, но вы не используете его как const-объект? Функциональность, которая вам нужна, обычно достигается путем реализации интерфейса и раскрытия только "доступных только для чтения" частей класса.