0

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

例如:

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

我想将该命令存储在某个地方,以便我可以将它传递给另一个班级。

4

2 回答 2

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;
于 2013-02-23T03:20:50.787 回答
1

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

public string OrderCode;

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

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

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

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

于 2013-02-23T03:21:52.017 回答