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 に答える