Указание только сеттера на множестве / получателе - PullRequest
7 голосов
/ 27 февраля 2011

Я использую методы получения и установки для создания экземпляра класса.

Можно ли корректировать устанавливаемое значение без необходимости иметь личную переменную и делать это непосредственно для типа?

Например, если мой класс:

public class Cat()
{
public String Age{get; set; }
}

и я хочу создать его экземпляр:

new Cat({Age: "3"});

Теперь, если у меня есть функция с именем ConvertToHumanYears, которую я хочу вызвать до ее сохранения, я бы вообразил, что это так:

public class Cat()
{
public String Age{get; set{ value = ConvertToHumanYears(value); }
}

Но вышеприведенное (и многие его отличительные признаки), похоже, возвращают ошибки. Можно ли сделать что-то подобное, не имея дополнительной частной переменной, которую я установил и получил?

Ответы [ 3 ]

18 голосов
/ 27 февраля 2011

Вы не можете использовать свойство auto для getter и иметь определение для setter.

это либо

public class Cat()
{
   public String Age{get; set; }
}

или

public class Cat()
{
  private String _age;

    public String Age{
      get{
          return _age;
      }
      set{
           _age = ConvertToHumanYears(value); 
      }
    }
  }

}
2 голосов
/ 27 февраля 2011

Как насчет этого?

public class Cat
{
    public string Age { get; private set; }
}

У вас должен быть сеттер, но он вызывается только внутри самого класса.

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

public Cat(string age)
{
    Age = age;
}

или

public Cat(string age)
{
    Age = ConvetToHumanYears(age);
}
0 голосов
/ 30 июля 2018

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

public String Age{get; private set; }

Иногда, чем очевиднее, тем труднее найти.Надеюсь, это кому-нибудь поможет!

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