仅在set / getter上指定setter

时间:2011-02-27 03:01:31

标签: c# silverlight windows-phone-7

我正在使用getter和setter来创建类的实例。

是否可以在不必拥有私有变量的情况下调整所设置的值,并直接在类型上进行调整?

例如,如果我的班级是:

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 个答案:

答案 0 :(得分:18)

你不能对getter使用auto属性,并且有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); 
      }
    }
  }

}

答案 1 :(得分:2)

这个怎么样?

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

你必须拥有setter,但它只能在类本身内调用。

然后,您可以创建一个允许设置值的构造函数:

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

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

答案 2 :(得分:0)

在这种情况下,没有用,但是我遇到了一个类似的问题,我只想将设置为私有并公开,而不是指定我将其标记为私有的设置器。我现在没有做到这一点。

public String Age{get; private set; }

有时候,它越明显,就越难找到。 希望这对某人有帮助!