创建获取变量值的函数

时间:2013-04-04 14:22:34

标签: c# class function variables

我是否应该直接从其他类中获取变量(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();
    }
}

4 个答案:

答案 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)

暴露字段是不好的做法,因为它不如暴露方法或属性广泛。例如,您希望根据其他字段值更改此字段的计算逻辑。这两种方法都可以实现,但如果您使用方法或属性,实施起来会更容易,更清晰。