Константа представляет статический член, значение которого никогда не может измениться.Это означает, что постоянное значение определяется во время компиляции.С утверждением:
public const TimeSpan theTime = new TimeSpan(13, 0, 0);
Нарушаются две аксиомы постоянных полей:
- Только встроенные типы C # (исключая System.Object) могут быть объявлены как const.
- Значение инициализации должно быть оценено во время компиляции
В вопросе используется тип TimeSpan, который не является встроенным (предопределенным) Типом.Это означает, что компилятор csc.exe не может его распознать.Если вы используете встроенный тип C # (например, String) и хотите инициализировать константный член значением времени компиляции, вы все равно получите ошибку: например
public const string MyNumber = SetMyString();
private string SetMyString()
{
return "test";
}
Для решения проблемы вы можете объявить член с помощью модификатора:
static readonly
, если вы хотите объявить поле только один раз во время выполнения:
public static readonly string MyNumber = SetMyString();
private static string SetMyString()
{
return "test";
}