起初我只是在做if語句來檢查發送的對象的類型,但如果你有一堆不同類型的消息對象,那麼這可能是一個真正的痛苦。然後我想,我做了一個被調用的事件,然後每個函數在某個類型正在監聽該事件時執行某些操作,並在其被調用時進行檢查。當通過tcp套接字接收消息時,是否有更好的方法來進行類型檢查?
與方式的if語句
//code for after message received - if you need the code for listening for the message i can give it but i don't see a need
Type msgType = msgObj.getType();
if(msgType == messageType1){
//do stuff
}
else if(msgType == messageType2){
//do more stuff
}
// and so on
,你可以看到,如果你有很多的不同的充類型的消息
與事件
private delegate messageEvent(object message);
public event messageEvent onMessage;
//code after message received
onMessage(msgObj);
// sample function that will listen for the onMessage event
private void onMessage(object message){
if(message.getType() == typeForThisFunction){
//do somthing
}
}
爲途徑的這種可吸你可以看到這比if語句容易一些,但是仍然會很痛苦,以確保一切都在監聽,並且如果存在大量不同類型的mes聖人,並讓他們同時檢查。
有沒有更好的方式做到這一點,更容易?
你能解釋第一個多一點嗎?我以前從未使用過Dictionary。它看起來像你將一個應該爲每種類型調用的過程添加到一個字典中,並將該類型用作關鍵字。那之後你做了什麼? – Shredder2500 2012-04-10 00:28:23
@ Shredder2500:您收到一條消息,並在其上執行'.GetType()';使用結果來檢查這樣的密鑰是否存在;如果是這樣,獲取相應的值(這是一個函數)並調用它,將消息作爲參數傳遞。有關如何使用字典的更多信息,請參閱MSDN。 – Jon 2012-04-10 07:08:23