我是否应该直接从其他类中获取变量(int number = something.number;
),还是应该使用函数来获取该数字(如下例所示)?有什么区别?
class someclass
{
private int number;
public float GetSomething()
{
return number;
}
}
class otherclass
{
someclass something;
private void somefunction()
{
int number = something.GetSomething();
}
}
答案 0 :(得分:2)
使用字段引用或 getter方法之间的区别在于,如果您创建了一个您希望使用“客户端代码”的方法,那么您始终可以< strong>稍后更改方法代码,客户端将不必更改其代码。如果您使用字段,则客户端必须更新其代码,从使用该字段到使用方法,如果您决定需要,例如,在方法中进行验证。因此,简而言之,最好使用 getter方法来实现面向未来的。但是,在像C#这样的语言中,您还可以使用属性,表现方式但看起来像字段,这样您就可以拥有最好的两个世界:良好的语法(字段)和面向未来的(方法)。
答案 1 :(得分:1)
直接访问类外的类变量不是一个好习惯,因此强烈建议使用methods(也包括properties)。 当没有直接访问类变量时,其他类可以使用它,每当您更改类的内部结构时,您都可以轻松地完成它。考虑你上课:
class someclass
{
// it's a field
private int number;
// it's a property
public int Number
{
get{return this.number;}
}
//or you can use method
}
编辑:如果过了一段时间后您发现将number
的类型更改为int?
会更好,那么您可以这样做,因为从不在课外使用number
只需更改号码并以此方式更改您的媒体资源
class someclass
{
private int? number;
public int Number
{
get{return this.number.Value;}
}
//or you can use method
}
答案 2 :(得分:1)
对于那种类型的数据,你最好使用一个属性:
class someclass
{
private int number;
public int Number
{
get {return number;}
set {number = value;}
}
}
然后你可以在其他地方使用someclass.Number
答案 3 :(得分:0)
暴露字段是不好的做法,因为它不如暴露方法或属性广泛。例如,您希望根据其他字段值更改此字段的计算逻辑。这两种方法都可以实现,但如果您使用方法或属性,实施起来会更容易,更清晰。