4

まだ C# を理解しようとしています (主に C で作業しています)。クラス「デバイス」があり、クラスのインスタンスを作成したいのですが、GUI メソッドでインスタンスを頻繁に使用するため、インスタンスにグローバルにアクセスしたいと考えています。

 public class Device
    {
        public string Name;
        public List<string> models = new List<string>();
        public List<string> revisions = new List<string>();
        ...
    }

どういうわけかこれをグローバルに宣言します。

 Device Device1 = new Device();
 Device1.Name = "Device1";

次に、後で WPF メソッドでアクセスします。

 private void DeviceViewItem_Selected(object sender, RoutedEventArgs e)
    {
       TreeViewItem selected = (TreeViewItem)sender;

        if (selected.Name == Device1.Name)
        {
            Device1.Models.Add("something");
            Device1.Revisions.Add("something");
        }

シングルトン パターンについて読んでいましたが、シングルトン クラスを作成する必要があるようですが、私の「デバイス」クラスは複数回使用されて多くのデバイスを作成しています。多分私はそのパターンをよく理解していないだけです。

4

1 に答える 1

9

新しいインスタンスを作成し、それを静的プロパティまたはフィールドに割り当てます。

public class AnyClass
{
    public static readonly Device ThisFieldCanBeReachedFromAnywhere = new Device();
}

クラス AnyClass は静的である必要はないことに注意してください (ただし、これはすべてのメンバーが静的でなければならないことを意味します)。

また、 readonly キーワードは必須ではないことに注意してください。これは、シングルトンの良い習慣です(マークがコメントで提案したように)。

于 2013-07-09T18:34:59.467 に答える