分かった! かも
昨日の「「オブジェクト指向」って難しい - 兼業主夫 ときどき 指揮者 のち ギーク?」について、id:kidd-number5さんが親切に教えてくれた。
オブジェクト指向をエンティティ的なクラスでやる場合 - ito.tetsunosuke/notebook
あと、別なところでid:myamya19701022さんも丁寧に教えてくれた。
で、いろいろ調べたり、ない知恵を振り絞って自分なりにいろいろ考えてみた。
念のため、classがどうなってるかを再掲。
class User { private string strUserName; //ユーザー名 private string strCharaName; //キャラクタ名 public string userName { get { return strUserName; } set { strUserName = value; } } //〜〜以下略〜〜 }
それでひらめいたんだけど、呼び出し側をこうすればいいんじゃね?
public partial class MainForm : Form { Hashtable userTable = new Hashtable(); void skype_MessageStatus(ChatMessage pMessage, TChatMessageStatus Status) { User user = new User(); if(modeSwitch == "add") {//登録時 user.userName = "ひこ"; //まず値を書き込む userTable["キー"] = user; //ハッシュテーブルに格納する } else if(modeSwitch == "update") {//更新時 user = userTable["キー"]; //まずハッシュテーブルから読み出す user.userName = "紫のバラの人"; //変更する値を書き込む userTable["キー"] = user; //ハッシュテーブルに格納する } else {//読み出し時 user = userTable["キー"]; //まずハッシュテーブルから読み出す hogehoge = user.userName; //実際に値を読み出す } } }
※ 「modeSwitch」は記述外で宣言されているものとする。
これなら
if(ht.ContainsKey("チェックしたいキー")) { 存在した時の処理 } //もしくは if(!ht.ContainsKey("チェックしたいキー")) { 存在しない時の処理 }
で、ぶん回さなくても存在チェックが行える。
って、まだ実際にやってないから、できるかどうか分からないんだけど(汗)