如何存储方法的输出?

Amr*_*rma 0 c# winforms

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

例如:

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

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

Form1 m=new Form1();
Run Code Online (Sandbox Code Playgroud)

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

m.orderNumber=string orderNUm. 
Run Code Online (Sandbox Code Playgroud)

它生成不同的订单号,我不想要.我想使用由数据库保存的订单号Form1.

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

Eri*_* J. 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();
    }
}
Run Code Online (Sandbox Code Playgroud)

"将其存储在某处"的概念就像是全局变量的概念.虽然可以完成基本相同的事情,但是不鼓励这样做,因为它不代表面向对象的设计原则.

只是为了理解你如何在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;
Run Code Online (Sandbox Code Playgroud)

如果你想设置一个实例订单号一次,然后用它前进,你可以把逻辑在构造函数:

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;
Run Code Online (Sandbox Code Playgroud)