日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
C#的TagMessage回顧:繁瑣而危險

一般來說,Erlang的消息是一個元組,而元組的***個元素為原子,用來標(biāo)識“做什么”。這個原子被稱為是這個消息tag,這種用法被叫做Tag Message,它是“Erlang編程規(guī)范”中的推薦用法。在C#中,我們當(dāng)然也可以這么做:

創(chuàng)新互聯(lián)建站主營碾子山網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,App定制開發(fā),碾子山h5小程序定制開發(fā)搭建,碾子山網(wǎng)站營銷推廣歡迎碾子山等地區(qū)企業(yè)咨詢

C#的Tag Message

 
 
 
 
  1. class Person : Actor  
  2. {  
  3.     protected override void Receive(Message message)  
  4.     {  
  5.         if (message.Tag == "Chat")  
  6.         {  
  7.             Person another = (Person)message.Arguments[0];  
  8.             Topic topic = (Topic)message.Arguments[1];  
  9.             // ...  
  10.         }  
  11.         else if (message.Tag == "Eat")  
  12.         {  
  13.             Restaurant restaurant = (Restaurant)message.Arguments[0];  
  14.             // ...  
  15.         }  
  16.         else if (message.Tag == "Work")  
  17.         {  
  18.             Person reportTo = (Person)message.Arguments[0];  
  19.             Job job = (Job)message.Arguments[1];  
  20.             // ...  
  21.         }  
  22.     }  

C#的Tag Message圖示如下:

C#的Tag Message這個方式和Erlang可謂如出一轍,但是由于缺少了Erlang的模式匹配和自動綁定,于是C#代碼需要大量的if…else判斷,以及繁瑣而危險的轉(zhuǎn)型操作。此外,和Erlang中動態(tài)類型的缺點(diǎn)完全相同,無論是消息的發(fā)送還是接受完全不是靜態(tài)類型的,因此無論是靜態(tài)檢查,編輯還是重構(gòu)都比較困難。試想,如果一個公用的服務(wù)所接受的消息結(jié)構(gòu)改變了,那么所有用到它的地方都必須修改正確——如果缺少靜態(tài)檢查,錯誤都只能在運(yùn)行時才能發(fā)現(xiàn)。Erlang有著強(qiáng)大的動態(tài)升級能力,尚可接受不斷地在線更新。而在.NET平臺中,如果使用這種Tag Message的方式,待到運(yùn)行時發(fā)現(xiàn)錯誤,要修改起來就比較麻煩了。


網(wǎng)頁標(biāo)題:C#的TagMessage回顧:繁瑣而危險
網(wǎng)頁URL:http://m.5511xx.com/article/codpocj.html