Поле
A const
должно быть константой времени компиляции . Если вы просто хотите что-то, что не изменится во время выполнения после первоначального назначения 1 , сделайте это только для чтения:
private static readonly int Message = RegisterWindowMessage("MY_MSG");
Обратите внимание, что я сделал это статическим, что const
неявно. Это означает, что RegisterWindowMessage
будет вызываться только один раз для этого AppDomain, что, я думаю, вам нужно.
РЕДАКТИРОВАТЬ: Ганс прав, вы должны проверить возвращаемое значение. Вы можете сделать это либо при первом его использовании, либо при инициализации типа - обычно инициализаторам типов не рекомендуется генерировать исключения, но вы должны увидеть, как это повлияет.
1 Строго говоря, статическое поле только для чтения может быть назначено в объявлении или в статическом конструкторе; Поле экземпляра только для чтения может быть назначено в объявлении или в любом конструкторе экземпляра. Его можно назначать несколько раз, что обычно не полезно, но может быть только время от времени.