0

キーと値のデータを保存し、効率的にアクセスできるようにしたいと考えています。

基本的に:カスタムオブジェクト(EquipmentObj)があり、そのオブジェクトには「DeviceType」というプロパティがあります。オブジェクトのコンストラクターで、ディクショナリ (EquipmentObj のローカル変数) に送信される文字列を渡し、ディクショナリにキーがある場合は値を返します。

ヒープで Dictionary を 25 回初期化することを最小限に抑えるために (EquipmentObj は 25 ~ 50 回インスタンス化されます)、これを行うためのより効率的な方法があるかどうか疑問に思っています。

私が最初に考えたのは XML でしたが、逆シリアル化を追加することはできません。これには入りません。

次に考えたのは、おそらく静的クラスを使用することでした。しかし、まだ KeyValuePair または Dictionary を定義する必要があり、静的クラスはインスタンス メンバーを持つことができません。

皆さんなら何を提案しますか?

これは、私が現在基本的に行っていることのサンプルです。

class EquipmentObj
    {
        public EquipmentObj(string deviceType)
        {
            addItems(); 
            this.DeviceType = EquipmentList.ContainsKey(device_Type) ? EquipmentList[deviceType] : "Default";
        }
        public string DeviceType { get; set; }
        private Dictionary<string, string> EquipmentList = new Dictionary<string, string>();

        private void addItems()
        {
            //Add items to Dictionary 
        }
    }
4

2 に答える 2

1

クラスはインスタンス メンバーを持つstaticことはできませんが、非静的クラスはstaticメンバーを持つことができます。それ自体を変更せずEquipmentListaddItems()両方を作成できます。staticEquipmentObj

class EquipmentObj
{
    public EquipmentObj(string deviceType)
    {
        addItems(); 
        this.DeviceType = EquipmentList.ContainsKey(device_Type) ? EquipmentList[deviceType] : "Default";
    }
    public string DeviceType { get; set; }
    private static Dictionary<string, string> EquipmentList = new Dictionary<string, string>();

    public static void addItems()
    {
        //Add items to Dictionary 
    }
}

次のように呼び出します。

EquipmentObj.addItems();
于 2013-01-31T22:08:21.137 に答える
0

デバイス タイプを処理する Manager クラスを作成できます。必須ではありませんが、ロジックを分離し、アプリ内の他の領域からデバイス タイプにアクセスするのが少し簡単になります。

public class EquipmentObj
{
    public EquipmentObj(string deviceType)
    {
        this.DeviceType = EquipmentObjManager.GetDeviceType(deviceType);
    }
    public string DeviceType { get; set; }
}

public class EquipmentObjManager
{
    private static Dictionary<string, string> EquipmentList = new Dictionary<string, string>();

    public static string GetDeviceType(string deviceType)
    {
        return EquipmentList.ContainsKey(deviceType) ? EquipmentList[deviceType] : "Default";
    }

    public static void AddDeviceType(string deviceTypeKey, string deviceType)
    {
        if (!EquipmentList.ContainsKey(deviceTypeKey))
        {
            EquipmentList.Add(deviceTypeKey, deviceType);
        }
    }
}

辞書に登録している場所はわかりませんが、呼び出しEquipmentObjManager.AddDeviceTypeてアイテムを辞書に追加できます。

あなたにとって最善の解決策ではないかもしれませんが、役立つかもしれません:)

于 2013-01-31T22:13:58.593 に答える