Как назывался метод доступа set, который позволяет устанавливать значение только в конструкторе? - PullRequest
3 голосов
/ 03 сентября 2010
public class MyClass
{
  public string Name {get; KEYWORD set;}

  public MyClass(string name)
  {
    this.Name = name;
  }
}

Есть идеи, что такое КЛЮЧЕВОЕ СЛОВО? Я искал по всему, но в Google трудно найти аксессоры get / set.

Ответы [ 4 ]

10 голосов
/ 03 сентября 2010

Если вы хотите установить значение только в конструкторе, я бы порекомендовал вам ключевое слово readonly :

public class MyClass
{
    private readonly string _name;
    public MyClass(string name)
    {
        _name = name;
    }

    public string Name 
    {
        get { return _name; }
    }
}
7 голосов
/ 03 сентября 2010

Ключевое слово private позволяет устанавливать свойство из любого места в классе:

private set;

т.е:

public string Name {get; private set;}

Если вы также хотите разрешить его установку из наследуемого класса, вы можете использовать protected.

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

2 голосов
/ 03 сентября 2010

Я знаю, что использование ключевого слова READONLY в поле позволяет один раз написать в это поле, и оно должно быть только в конструкторе.

1 голос
/ 03 сентября 2010

как GenericTypeTea сказал, что вы, вероятно, ищете ключевое слово private.

Однако, чтобы было ясно, если сделать ваши собственные методы доступа приватными, это не ограничивает ТОЛЬКО конструктор, но в любом случае внутри класса.

Чтобы сделать свойство доступным ТОЛЬКО для конструктора, вам нужно что-то вроде этого

public class MyClass
{
  private string name;
  public string Name {get { return name;} }

  public MyClass(string nameString)
  {
    name = nameString;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...