Кто-нибудь знает, почему?
Пример кода, демонстрирующий условия, при которых выдается предупреждение, и условия, при которых предупреждение не выдается:
Код: Выделить всё
namespace Test1
{
class Test1
{
#if TRY_IT
public readonly int m; //OK: warning CS0649: Field is never assigned to, and will always have its default value 0
protected readonly int n; //OK: warning CS0649: Field is never assigned to, and will always have its default value 0
internal readonly int o; //OK: warning CS0649: Field is never assigned to, and will always have its default value 0
private readonly int p; //OK: warning CS0649: Field is never assigned to, and will always have its default value 0
protected internal readonly int q; //OK: warning CS0649: Field is never assigned to, and will always have its default value 0
Test1()
{
if( p != 0 ) //To avoid warning 'The field is never used'
return;
}
#endif
}
public class Test2
{
#if TRY_IT
private readonly int m; //OK: warning CS0649: Field is never assigned to, and will always have its default value 0
internal readonly int n; //OK: warning CS0649: Field is never assigned to, and will always have its default value 0
Test2()
{
if( m != 0 ) //To avoid warning 'The field is never used'
return;
}
#endif
public readonly int o; //Blooper: no warning about field never assigned to.
protected readonly int p; //Blooper: no warning about field never assigned to.
protected internal readonly int q; //Blooper: no warning about field never assigned to.
}
public sealed class Test3
{
public readonly int m; //Blooper: no warning about field never assigned to.
}
}
- Внутренний класс может быть подклассом, но компилятор этого не делает.
В этом случае воздержитесь от выдачи предупреждения. - Компилятор не может выдать предупреждение даже в случае запечатанного
класса, как показывает Test3 в примере кода. - Предупреждение имеет смысл ради целостности базового
класса независимо от того, что может или не может делать производный класс.
Классу явно запрещено инициализировать
член базового класса, доступный только для чтения. (Спасибо, Джим Мишел.)
Подробнее здесь: https://stackoverflow.com/questions/868 ... nly-fields
Мобильная версия