◎代碼編定實現Interface時
C#中使用 :Interface,而後按shift+alt+F10回車,呵呵,所有接口需實現的方法屬性所有自動生成。固然這個是2005纔有的。2003不知有沒有,反正我是沒有找着。何況2005也算是廣泛了。
VB中使用 Implements,光標定位至相應的Interface的上面,直接回車,呵呵,比C#還少一步就自動生成接口須要實現的方法及屬性了。數據庫
◎關鍵字對應關係:
編程
C#網絡 |
VB.NETide |
using函數 |
Imports工具 |
thispost |
Me動畫 |
voidthis |
Sub編碼 |
base |
MyBase |
abstract |
MustInherit |
sealed |
NotOverridable |
virtual |
MustOverride |
switch |
Select |
internal |
Friend |
static |
Shared |
<T> |
(Of T) |
都是基於XML語法,能夠描述代碼中每個類型和每個成員的信息,咱們知道書寫XML文檔註釋最大的好處就是能夠得到智能感知的支持,並結合特定的xlts生成漂亮的幫助文檔,C#中連續輸入///即會自動生成相對應的符合xml的註釋出來。這點VB好像不成,VB中連續輸和''',而後要手工寫出符出xml格式的註釋出來,一旦開始就不能斷開,也不能摻雜其餘代碼元素,直到全部的XML標記被關閉。<summary>是VB推薦使用的標記,是該描述元素的摘要。 除了<summary>,經常使用的標記有<remark>,表示說明;<param>表示參數信息;< exception>表示異常,此外還有<include>和<permission>等等。固然也不必定非要使用這些推薦的標記的,可是這些標記使用時能夠自動完成,並且能被IDE所利用,因此C#就能夠在///以後自動生成。關於這一點。本人比較鐘意C#多點。
◎My命名空間
"My"是一個極爲出色的設計,是一個工程相關的命名空間,其中的內容是由IDE幫助組織的。這個多是VB優於C#一個地方吧,至少到目前爲此我所知道的,C#是沒有這個命名空間。固然C#中的Properties是能夠實現VB中的My.Resources和My.Settings,至於My.User、My.Forms和My.WebServices就真的沒有了,要實現他們的功能,須要徹底手工編碼。
My命名空間在當前版本中主要包含六個主要部分,分別是:My.Application、My.Computer、My.Resources、My.User、My.Forms和My.Webservices。直接輸入My關鍵字就可找到他們,也能夠導入My命名空間,其語法是: Imports 項目名稱.My
因爲這是一項對於我來講是一項新的功能,查閱相關資料獲得:
My.Application是與當前運行的應用程序有關的對象,許多功能和Application對象是同樣的,可是My.Application不只僅能用於Windows Form的應用程序,許多功能在控制檯應用程序照樣可以使用。列表說明以下:
My. Application成員 |
功能描述 |
ApplicationContext |
應用程序的上下文,包括主線程和主窗體的信息 |
AssemblyInfo |
程序集信息,包括版本、版權、標題、產品名稱和可執行名稱等 |
ChangeCurrentCulture |
改變應用程序當前文化設置,如貨幣和時間的格式 |
ChangeCurrentUICulture |
改變應用程序當前的用戶界面文化設置,如顯示語言和用詞 |
CommandLineArgs |
一個只讀集合,返回當前應用程序的命令行參數。這些參數已經分隔開,無須像原來那樣手工分隔Command函數的值了 |
CurrentCulture |
返回當前的文化設置 |
CurrentDirectory |
返回應用程序使用的當前目錄 |
CurrentUICulture |
返回當前的用戶界面文化設置 |
Deployment |
返回按照ClickOnce方法部署的應用程序的Deployment對象 |
DoEvents |
執行儲存在Windows消息隊列中的全部Windows消息 |
Exit |
退出應用程序 |
GetEnvironmentVariable |
經過環境變量的名字獲取環境變量的值 |
IsNetworkDeployed |
返回一個值,指示當前應用程序是否採用了網絡部署方式 |
Log |
一個記錄應用程序事件日誌和異常的日誌工具 |
MainForm |
當前應用程序的主窗體 |
OpenForms |
當前應用程序中全部已經打開窗體的集合,與VB6的Forms集合功能相同 |
Run |
啓動Visual Basic的啓動/關閉應用程序模式 |
SplashScreen |
返回當前應用程序做爲Splash Screen的窗口 |
My.Computer封裝了大量訪問系統和硬件信息的功能,操做起來比直接使用.NET Framework或Windows API都方便得多。包括不少對象,利用這些對象,之前要寫N多代碼的東東,如今可能一兩行代碼便可搞定。
My.Computer中的對象 |
功能描述 |
示例代碼 |
My.Computer.Audio |
提供了播放音頻的功能,它既能夠從wav等文件播放,也能夠從音頻數據流來播放,就是說你能夠用它輕鬆播放儲存在資源文件中或者數據庫中的音頻。播放時還能夠指定後臺播放或等待結束等多種設置。結合My.Resources來使用,更顯得方便無窮。 |
![]() |
My.Computer.Clipboard |
提供了以強類型方式讀寫剪貼板的功能,比Windows.Forms裏面的剪貼板更加好用。使用Clipboard對象能夠直接從剪貼板讀寫音頻、圖像、 文本甚至個人電腦中的文件拖放信息。此外,由VB6升級的項目如今將直接使用My.Computer.Clipboard對象升級之前的 Clipboard對象,這將解決VB.NET不能升級原先剪貼板功能的缺陷。 |
![]() |
My.Computer.Clock |
獲取時間的工具,它能夠直接獲取當地時間、中時區的時間和從當時子時開始的毫秒計數。 |
|
My.Computer.FileSystem |
充分改善文件操做的複雜程度。FileSystem對象提供了易於理解的操做方式。FileSystem對象中複製文件的方法不但只須要指定目標路徑,還 能夠幫助你創建目標目錄中不存在的級別。它還特別提供了CopyDirectory的功能,能夠複製整個目錄!這正是目前.NET Framework缺少的功能。同時FileSystem還能提供搜索上級目、子目錄或根目錄的功能,很是體貼。 |
![]()
![]()
|
My.Computer.Info |
得到本機物理內存或虛擬內存的總數,剩餘量、操做系統名稱、當前用戶名、本機安裝的文化設置等等,均可以輕鬆使用Info對象,它讓你對應用程序所在的系統瞭如指掌。 |
|
My.Computer.Keyboard 和My.Computer.Mouse |
快速得到用戶鍵盤的信息,如大寫鎖定、數字鍵盤鎖定等是否打開,以及鼠標有幾個按鍵,是否配備滾輪等。若是你但願你的應用程序可以作到最體貼用戶,那這些信息是少不了了 |
![]() |
My.Computer.Network |
最經常使用的網絡任務,只須要一行代碼,就能夠Ping一個地址,或者檢測網絡是否接通。 |
![]()
|
My.Computer.Port |
提供了用一行代碼打開本機串口的功能,還能馬上綁定一個事件監視串口的變化。如今串口編程出奇的簡單,不再須要MSComm控件了。 |
|
My.Computer.Printers |
可以遍歷本機所安裝的全部打印機,還能找出默認的打印機。經過向默認打印機畫圖同樣的操做,就能開始打印了。這樣的操做會讓你想起VB6時代便利而簡潔的 打印操做。下面的例子將在默認打印機上打印一個橢圓。從VB6升級項目時,原來的Printer對象將自動升級爲 My.Computer.Printers中的相關操做,升級的用戶能夠更加放心了。 |
![]()
|
My.Computer.Registry |
比Microsoft.Win32空間中的那個版本簡單多了,他提供強類型的路徑支持,還能很是方便地讀寫註冊表。 |
![]() |
My.Computer.Screen |
獲取屏幕的可視範圍,像素的位數等。比VB6的Screen對象更強的是,它如今支持兩個顯示器。 |
My.Resources不是一個類庫,而是My命名空間中惟一一個子命名空間。是對項目資源的強類型封裝,從而使的資源的使用變得很是簡單。
My.User是My命名空間中最小的成員,和Thread.CurrentPrincipal屬性有關。簡單地將用戶名和角色信息提供,若是要得到當前登陸的用戶名,只須要輸入My.User.Identity就好了。
My.Forms感受就是給VB6.0的用戶找回一個之前的窗體編程模式, 由於My.Forms雖然在My命名空間中,可是使用它並不須要輸入My.Forms。並且My.Forms爲項目中每個窗體維護了一個默認實例,其實現方法很像Singleton模式——每一個窗體都有一個默認實例,並且有一個全局訪問點,就經過窗體的類名便可訪問到。假設有兩個窗體——Form1和Form2,Form1是啓動窗體,如今你要用代碼顯示Form2,只需Form2.Show便可。要在Form2中修改Form1中一個TextBox的文字,只須要這樣:Form1.textBox1.Text = "Hello"便可。My.Forms的功能是解決窗體互訪的最佳模式,同時也不會浪費內存,由於它只有在第一次訪問所需窗體的時候才創建它。
My.WebServices原理同My.Forms同樣。WebService對於項目全局應該有一個一致的訪問點,因此VB2005將代替你建立代理類的實例,並維護於My.WebServices中,你能夠隨時訪問他。
擴展My命名空間的功能
直接把類或模塊放入My命名空間是個方便的方法,作法很是簡單,只要將類或模塊定義在My命名空間中便可,例如:
而後就能夠直接用My.Tools來訪問自定義的模塊,這種是將函數作成靜態的,但全部的方法都作成靜態畢竟不是最佳方法,因此資料推薦的作法是:首先咱們要定義自定義類,能夠放在任何地方,而沒必要放到My命名空間中,這樣就能夠避免類名直接顯示在My關鍵字後。而後,在My命名空間下,定義一個帶有HideModuleNameAttribute的模塊,名稱能夠隨便起;最後在模塊中設定訪問自定義類實例的屬性。
利用Partial關鍵字能夠擴展My.Application或My.Computer的功能的。其對應的Class分別爲MyApplication和MyComputer。
在C#中使用My.Application要使用My.Application,必需要繼承System.Windows.Forms.WindowsFormsApplicationBase (該類位於Microsoft.VisualBasic.dll中)。繼承以後咱們要作幾件事情,首先書寫構造函數初始化MyApplication類, 在Visual Basic中這些設置均爲IDE生成,而C#則須要手工書寫。而後重寫OnCreateMainForm方法,這個方法設定了當前應用程序的主窗體。接下 來書寫My類,讓他提供對MyApplication類的全局訪問點。最後改寫Main,在其中執行My.Application.Run()代替原來的 Application.Run(),具體作法以下。
修改Main函數
最後,再將本身對於事件機制的一小段代碼貼在這裏,算是本身的筆記吧,另開一個隨筆又有閑太過於勉強,看這篇反正是講VB VS C#的,想放在這裏也未嘗不可: