如何存储方法的输出

本文关键字:方法 输出 存储 何存储 | 更新日期: 2023-09-27 18:00:45

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

例如:

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保存在数据库中的订单号。

我想把这个单词存储在某个地方,这样我就可以把它传给另一个类。

如何存储方法的输出

另一个类可以通过调用方法本身来使用结果:

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;

这是相当基本的东西,但将其添加到类的顶部:

public string OrderCode;

接下来在return ord;行上方添加OrderCode = ord;

现在,每当有人需要订单代码时,他们只需致电<YourClass>.OrderCode

然而,他们可以直接调用方法本身来获取订单号,因为它是公共的。

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