我正在寻找简单的方法将方法的输出存储在某种变量中,以便它可以被另一个类使用。
例如:
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存储在某处,以便我可以将它传递给另一个类。
答案 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