◎代码编定实现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#的,想放在這里也未嘗不可: