newしたクラスをDictionaryに順に追加していき、
1度生成したインスタンスはDictionaryから取得する(何度もnewしない)ようなプログラムを作成しました。
using System; namespace TestInstance { public interface AppInterface { void AppOutPut(string id, string name, string age); } }
using System; using System.Collections.Generic; namespace TestInstance { public static class AppManager { public static AppInterface _IApp = null; private static Dictionary<string, AppInterface> _AppList = new Dictionary<string, AppInterface>(); public static AppInterface LogManager(string IdKey) { if (_AppList.ContainsKey(IdKey)) { _IApp = _AppList[IdKey]; } else { _IApp = new AppOutPutInfo(); _AppList.Add(IdKey, _IApp); } return _IApp; } } }
using System; namespace TestInstance { public class AppOutPutInfo : AppInterface { public void AppOutPut(string id, string name, string age) { Console.WriteLine("番号:{0}", id); Console.WriteLine("名前:{0}", name); Console.WriteLine("年齢:{0}", age); } } }
上記のAppOutPut()を呼び出すクラス
using System; using System.Windows.Forms; namespace TestInstance { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Button1_Click(object sender, EventArgs e) { AppInterface _ILog = AppManager.LogManager("ID0001"); _ILog.AppOutPut("001","Yamada","20"); } private void Button2_Click(object sender, EventArgs e) { AppInterface _ILog = AppManager.LogManager("ID0002"); _ILog.AppOutPut("002", "Kawasaki", "40"); } } }
上記のようなプログラムを作成しました。
今悩んでいるのは
Button1_Click()実行後にButton2_Click()を実行すると、
「private static Dictionary<string, AppInterface> _AppList = new Dictionary<string, AppInterface>();」
には、プログラムが起動している間は常に「2件」値が入っている状態になります。(これはこれでOKなんです)
Button1_Click()実行:_AppListに追加
Button2_Click()実行:_AppListに追加
Button1_Click()の処理が終わった後に、_AppList から削除したい場合、どうしたら実現できましか?
いい方法はありますか?
単に、
Dictionaryのリストから削除( _AppList.Remove("ID0001"); ) で問題ないのでしょうか?
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/30 04:15 編集