繁体   English   中英

从其他类访问一个类的对象

[英]Access object of a class from other classes

我意识到这可能是一个非常简单的问题,将很快得到答复。 但是想知道该怎么办。 我有一个名为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;
    }
}

我不太确定该从何去何从,希望获得一些帮助/解释。 非常感谢

这是无效的:

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任何实例时,该实例将被该局部变量引用。

继续并使用调试器逐步完成此过程,您应该对调用方法时的情况有更清楚的了解。

(注意,这里的命名是有点不直观,这可能是增加了混乱。是你的对象是“预算”或者是“用户”?明确定义和命名您的类型和变量走一段很长的路 ,以使代码更容易来写。)

这是对Expenses类的非常简单的更改:

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);
}

在设计方法时,记住一个方法接受一个通用参数及其传递特定内容的调用者 ,这一点很重要。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM