Как преобразовать статическое свойство в свойство const в C #? - PullRequest
1 голос
/ 01 апреля 2019

Код ниже с ключевым словом static работает нормально, но я хочу сделать свойство ниже как constant в C #.

Причиной этого является согласованность всего проекта. Все свойства, значение которых никогда не будет изменено, помечены как const, а не static or static readonly в существующем проекте.

public class StatusList
{
public static Dictionary<DownloadStatus, int> DownlodStatusList
{
  get
  {
    return new Dictionary<DownloadStatus, int>()
        {
          { DownloadStatus.Preview, (int)DownloadStatus.Preview },
          { DownloadStatus.Active, (int)DownloadStatus.Active },
          { DownloadStatus.Expired, (int)DownloadStatus.Expired },
          { DownloadStatus.Inactive, (int)DownloadStatus.Inactive }
        };
  }
}
}

Ответы [ 2 ]

1 голос
/ 01 апреля 2019

Вы не можете.

Существует разница между static readonly и const в том, что всякий раз, когда код ссылается на const, значение const запекается непосредственно в точке, на которую оно ссылается. Следовательно, const может быть только числом, логическим значением, строкой или нулем.

0 голосов
/ 01 апреля 2019

Из документов :

Константы могут быть числами, логическими значениями, строками или нулем ссылка.

...

Инициализатор постоянного локального или постоянного поля должен быть константное выражение, которое может быть неявно преобразовано в цель тип. Постоянное выражение - это выражение, которое может быть полностью оценивается во время компиляции . Поэтому единственно возможные значения для константами ссылочных типов являются строковые и нулевые ссылки.

Сказав это, вы не можете использовать const для всего, что не является литералом времени компиляции. В частности, это включает в себя все, что было инициализировано с new.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...