как присвоить значение статическому полю только для чтения - PullRequest
2 голосов
/ 17 ноября 2011

У меня есть поле, которое является статическим и доступно только для чтения.Требование заключается в том, что значение должно быть присвоено полю во время входа в систему, и после этого оно должно быть только для чтения.Как мне этого добиться?

  public static class Constant
    {
        public static readonly string name;                

    }

Пожалуйста, руководство.

Ответы [ 5 ]

3 голосов
/ 17 ноября 2011

Если вы объявляете поле только для чтения, вы можете установить его только в конструкторе класса. То, что вы могли бы сделать, это реализовать свойство, имеющее только геттер, и предоставить метод изменения, который используется во время последовательности входа в систему для изменения значения. Другие части вашей программы могут эффективно использовать это свойство, не позволяя им изменять значение.

1 голос
/ 17 ноября 2011
public static class Constant
{
    public static string Name
    {
        get
        {
            return name;
        }
        set
        {
            if (name == null)
                name = value;
            else
                throw new Exception("...");
        }
    }
    private static string name;
}
1 голос
/ 17 ноября 2011

нужен статический конструктор

public static class Constant
{
    public static readonly string name;

    static Constant()
    {
        name = "abc";
    }
}
0 голосов
/ 17 ноября 2011

Вы также можете создать статический конструктор в своем статическом классе

static Constant()
{
    name = "Name";
}
0 голосов
/ 17 ноября 2011

Просто присвойте значение в объявлении (или конструкторе) следующим образом:

public static class Constant     
{
    public static readonly string name = "MyName";
} 

readonly - это сахар для компилятора, который говорит ему, что вы не собираетесь изменять значение внеконструктор.Если вы сделаете это, он выдаст ошибку.

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