如何存储方法的输出?

时间:2013-02-23 03:12:07

标签: c# winforms

我正在寻找简单的方法将方法的输出存储在某种变量中,以便它可以被另一个类使用。

例如:

partial class Form1 {
    public string orderNumber() {
        string ord="ORD"+get_next_id()+DateTime.Now.Year;
        return ord;
    }
}

Form1用户的实例中输入购买详细信息,例如名称,地址......当用户点击添加条目按钮时,详细信息将保存在数据库中,上面的代码生成ordernumber 。在此期间,当用户单击添加条目时,它会终止当前表单并显示另一个使用之前生成的ordernumber的表单。当我喜欢

Form1 m=new Form1();

并执行类似(以下是伪代码)

m.orderNumber=string orderNUm. 

它会生成我不想要的不同订单号。我想使用Form1保存在数据库中的订单号。

我想将那个ord存储在某处,以便我可以将它传递给另一个类。

2 个答案:

答案 0 :(得分:5)

另一个类只需调用方法本身即可使用结果:

public class A
{
    public string orderNumber()
    {
        string ord = "ORD" + get_next_id() + DateTime.Now.Year;
        return ord;
    }
}

public class B
{
    public void DoSomeWork()
    {
        A a = new A();
        string result = a.orderNumber();
    }
}

“将其存储在某个地方”的概念感觉就像全局变量的概念。虽然人们可以完成同样的事情,但是不鼓励这样做,因为它不代表面向对象的设计原则。

只是为了理解 你可以在C#中做到这一点(你不应该这样做),你可以这样做:

static public SharedStorage
{
    public string OrderNumber { get; set; }
}

// Somewhere in your code

SharedStorage.OrderNumber = a.orderNumber();

// Somewhere else in your code

string orderNumber = SharedStorage.OrderNumber;

如果您想在实例上设置订单号,然后继续使用它,您可以将逻辑放在构造函数中:

public class A
{
    public string OrderNumber { get; private set; }
    public A()
    {
        OrderNumber = "ORD" + get_next_id() + DateTime.Now.Year;
    }
}

// Somewhere else in your code

A a = new A();
string orderNumber = a.OrderNumber;

答案 1 :(得分:1)

这是相当基本的东西,但是将它添加到班级的顶部:

public string OrderCode;

接下来在OrderCode = ord;

上方添加return ord;

现在每当有人需要订购代码时,他们只需拨打<YourClass>.OrderCode

但是,他们可以调用方法本身来获取订单号,因为它是公开的。

PS:orderNumber方法不遵循c#约定。 a)它应该正确大写(OrderNumber)和b)更有意义的名称是GetOrderNumber