2015-11-30 3 views
1

Я получаю следующее предупреждение:предупреждение CS0649 на частном статическом поле

Предупреждение «TemplateManager.Templates» CS0649 FIELD никогда не назначается, и всегда будет иметь значение по умолчанию нулевой

Соответствующий код выглядит следующим образом:

public static class TemplateManager 
    { 
     private static Dictionary<string, Stream> Templates; 
     public static List<string> TemplateNames { get; private set; } 

     static TemplateManager() 
     { 
      Templates = new Dictionary<string, Stream>(); 
      TemplateNames = new List<string>(); 
     } 

Мне кажется, что я назначаю ему значение. Является ли это ошибкой или я просто пропустил что-то важное? Связано ли это с тем, что класс и/или поле являются статическими?

+0

Вы уверены, что навели его правильно? Я не ошибаюсь в своей Visual Studio. Фактически вы можете удалить инициализацию, и все равно не будет синтаксической ошибки - статические переменные не обязательно должны быть назначены вообще. – Cardin

+0

Я попытался воспроизвести это, и я не получаю ошибку, это, скорее всего, проблема с VS не обновляя предупреждения по некоторым причинам, это время от времени происходит. Просто скомпилируйте или перезапустите VS, и он должен уйти. – Cyral

+0

Если вы переместите инициализацию в самое поле (а не в конструктор), вы все равно получите ошибку? – mattherman

ответ

1

Проблема была решена путем очистки и восстановления моего проекта.

-3

Причина этого, вероятно, в том, что вы установили ее как конфиденциальную. Это может означать, что вы не можете получить доступ к функции set, поэтому она никогда не будет обновлена ​​с нуля. Удалите приватную перед установкой и попробуйте.

[Обновить] Да, я плохой, я совершенно неправильно понял это.

+0

Это не то, что 'private' делает. – Cyral

Смежные вопросы