The C# compiler is kind enough to give you a \"field is never assigned to\" warning if you forget to initialize a readonly member which is private or internal, or if the cla
I think it's because the warning related to the scope and usage. Public and protected member can be accessed outside the assembly scope and by the class consumer, and the developer might actually want the value of the variable to be its default.
On the other hand, private and internal members are used internally, and you make it readonly because you do not want yourself to mistakenly change it, so it's highly likely that it should be initialised somewhere.