我正在使用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); }
}
但是上面(以及它的许多方面)似乎都会返回错误。是否有可能做类似的事情,而不必设置额外的私有变量?
答案 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; }
有时候,它越明显,就越难找到。 希望这对某人有帮助!