从其他类访问类的对象

时间:2015-11-17 15:33:30

标签: c# class

我意识到这可能是一个非常简单的问题,很快就会得到解答。但想知道该怎么做。我有一个名为Budget的类,其对象名为' user01'我基本上希望能够跨多个类访问该对象,类似于下面的代码。

主要

static void Main(string[] args)
    {
        Budget user01 = new Budget(1000);
    }

预算类

class Budget
{
    private int _budget;

    public Budget(int budget)
    {
        _budget = budget;
    }

    public int UserBudget
    {
        get { return _budget; }
        set { _budget = value; }
    }
}

费用等级

class Expenses
{
    // What I've been trying to do...
    public int Something(user01.budget)
    {
        user01.budget - 100;
        return user01.budget;
    }
}

我不确定从哪里开始,我希望得到一些帮助/解释。非常感谢

2 个答案:

答案 0 :(得分:1)

这是无效的:

public int Something(user01.budget)

但是可以向该方法提供Budget对象的实例:

public int Something(Budget budget)
{
    budget.UserBudget -= 100;
    return budget.UserBudget;
}

然后,您可以从消费代码中调用该方法:

Budget user01 = new Budget(1000);
Expenses myExpenses = new Expenses();
int updatedBudget = myExpenses.Something(user01);

该方法不会访问变量user01"。但是,当您调用该方法时,提供与您的user01实例。在方法内部,本例中提供的实例由本地budget变量引用。每次调用该方法并为其提供Budget的任何实例时,该实例将被该局部变量引用。

继续使用您的调试器逐步完成此操作,您应该更清楚地了解调用方法时发生的事情。

(请注意,此处的命名有点不直观,这可能会增加混乱。您的对象是"预算"还是#34;用户"?明确定义和命名你的类型和变量是很长的方式,使代码更容易编写。)

答案 1 :(得分:1)

对您的费用类进行非常简单的更改:

class Expenses
{
    // What I've been trying to do...
    public int Something(Budget userBudget)
    {
        userBudget.UserBudget -= 100;
        return userBudget.UserBudget;
    }
}

然后你可以从你的主要班级这样打电话:

static void Main(string[] args)
{
    Budget user01 = new Budget(1000);
    Expenses expenses = new Expenses();
    var result = expenses.Something(user01);
}

或者,如果您使用Something方法static,则可以在没有实例的情况下调用它:

class Expenses
{
    // What I've been trying to do...
    public static int Something(Budget userBudget)
    {
        userBudget.UserBudget -= 100;
        return userBudget.UserBudget;
    }
}

您可以这样称呼:

static void Main(string[] args)
{
    Budget user01 = new Budget(1000);
    var result = Expenses.Something(user01);
}

在设计方法时,重要的是要记住方法接受一般参数,而调用者传递特定的东西。