创建一个获取变量值的函数

本文关键字:获取 变量值 函数 一个 创建 | 更新日期: 2023-09-27 18:07:20

我应该更喜欢直接从其他类(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();
    }
}

创建一个获取变量值的函数

使用字段引用getter方法的区别在于,如果您创建了一个您希望"客户端代码"使用的方法,那么您总是可以稍后更改方法代码,而客户端将不必更改其代码。如果您使用字段,那么客户端将不得不更新他们的代码,从使用字段到使用方法,如果您决定,例如,在方法中进行验证。因此,简而言之,对于,使用getter方法是更好的实践。然而,在像c#这样的语言中,您也可以使用属性,其中的行为类似于方法,但看起来像字段,因此您可以两全其美:良好的语法(字段)和未来的保证(方法)。

对于这种类型的数据,您最好使用属性:

class someclass
{
    private int number;
    public int Number 
    {
        get {return number;}
        set {number = value;}
    }
}

则可以使用某些类。

直接访问类外的类变量不是一个好的做法,因此强烈建议使用方法(也包括属性)。当不能直接访问您的类变量时,其他类可以使用它,并且无论何时更改类的内部结构,您都可以轻松地完成。考虑你的类:

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
}

EDIT:如果过了一段时间,你发现最好把number的类型改为int?,你可以这样做,因为从来没有在类外任何人使用number,所以你可以简单地改变数字和改变你的属性

class someclass
{
    private int? number;
    public int Number
    {
        get{return this.number.Value;}
    }
    //or you can use method
}

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