Вы передаете значение в конструктор:
public class foo
{
public readonly int _bar;
public foo(int bar)
{
_bar = bar;
}
};
var x = new foo(12345);
То, что говорит вам компилятор, это то, что единственное место, где вы можете установить свое поле только для чтения, находится в конструкторе класса, который его содержит, этоозначает:
- , если вам нужно изменить его в течение времени жизни объекта, тогда
readonly
не является правильным вариантом для использования - , если каждый экземпляр класса должен содержатьпользовательское значение в переменной-члене только для чтения, тогда вам нужно вставить его как часть конструктора
Я бы сказал, что не рекомендуется делать поле только для чтения общедоступным вот так, вместо этого просто выставьте его как публичное свойство, которое имеет только геттер.