Подтвердить что ты не робот

Методы Const в С#

В С++ вы можете определить такой метод:

int func_that_does_not_modify_this(int arg) const {}

Размещение const в конце функции предотвращает случайную модификацию любых внутренних свойств и позволяет вызывающему абоненту знать, что эта функция не будет изменять объект.

Есть ли такое понятие в С#?

4b9b3361

Ответ 1

Нет, в С# ничего подобного нет. Об этом говорилось много, но довольно сложно заставить const работать таким образом, чтобы он поддавался проверке во время компиляции, не может быть отброшен, как на С++, и по-прежнему достаточно легко использовать, получить его совершенно правильно, когда они разрабатывают свои собственные классы.

Конечно, если вы создаете свои собственные типы для неизменяемости (например, string), то все методы экземпляров на нем эффективно являются константами. Это не всегда практично, но это важный метод для использования там, где это необходимо.

Ответ 2

Код контракта должен предоставить такую ​​функцию в будущем. В настоящее время вы можете отметить метод [Pure], что означает, что он не имеет побочных эффектов (т.е. Не изменяет никаких членов класса). К сожалению, текущая версия инструментов не применяет это правило, поэтому использование этого атрибута предназначено только для целей документации. Я уверен, что в будущей версии он будет применяться с помощью статического анализа (т.е. Во время компиляции) или, по крайней мере, того, на что ссылается документация.

Связанные вопросы SO: Чистые функции на С#

Ответ 3

Нет. В С# ничего подобного нет.

Нет const &.

Как указывает Джон, вы, очевидно, можете реализовать метод const, но нет способа выйти за рамки документации, чтобы позвонивший знал, что метод const.