1

ボタンが押されるたびに、ファイルに 1 行のテキストを書き込んでいます。

次のような静的クラスを定義しました。

public static class PalletRecord
{
    public static string MachineName { get; set; }
    public static DateTime TimeStamp { get; set; }
    public static string BranchPlant { get; set; }
    public static string Location { get; set; }
    public static string Data { get; set; }
    public static string ItemCode { get; set; }
    public static string ItemDescription { get; set; }
    public static decimal Quantity { get; set; }
}

ファイルに書き込む必要があるたびに、静的クラス プロパティを設定し、File.AppendAllLines を使用してテキスト ファイルに書き込みます。

非静的クラスでそれを行う必要がありましたか?

4

2 に答える 2

6

はい !このような状態を維持するために静的を使用すると、問題が発生します。これは、静的状態がすべてのスレッドで共有されるため、現在または将来マルチスレッドが必要になる可能性がある場合に特に当てはまります。もう 1 つの問題は、不完全な初期化バグである可能性があり、前のレコードの状態の ½ と新しいレコードの状態の ½ が残ります。

プロパティを非静的にし、レコードごとに正しいプロパティを持つクラスのインスタンスを 1 つ作成する方がはるかに優れています。プロパティを設定するコンストラクターを作成して、インスタンスがあるときはいつでも有効なレコードがあることを確認できます (プロパティ セッターを非公開にすることも検討してください)。

これはまた、あなたが取り組んでいる問題をよりよくモデル化します。ファイルに複数の異なるレコードを書き込みます。これは、レコードを表すクラスのインスタンスによって最もよく表されます。私の意見では、書き込む必要がある各レコードに対してクラスのインスタンスを使用することは、これを行うための適切でクリーンなオブジェクト指向の方法です。

于 2012-11-30T17:56:25.437 に答える
0

大きな違いはありません。それが機能する場合は機能します。新しいクラスを作成すると、より多くのメモリが使用されます。新しいクラスを作成しますが、とにかく大したことではありません。データベースに保存して破棄した場合、ソリューションは機能します。レコードがメモリに保存されている場合は、レコードごとに新しいクラスを作成します。

于 2012-11-30T17:57:22.123 に答える