最近因为工作的关系,需要从用了三年的C#转用VB.NET啦。没有办法,本来嘛,使用语言是没有很大的关系的。但刚刚使用的时候,多多少少还是有一些磕磕碰碰的。主要是代码编写的操作便捷方面,总结几点:

◎代码编定实现Interface时
 
C#中使用 :Interface,然后按shift+alt+F10回车,呵呵,全部接口需实现的方法属性全部自动生成。当然这个是2005才有的。2003不知有没有,反正我是没有找着。况且2005也算是普遍了。
VB中使用 Implements,光标定位至相应的Interface的上面,直接回车,呵呵,比C#还少一步就自动生成接口需要实现的方法及属性了。

◎关键字对应关系:

C#

VB.NET

using

Imports

this

Me

void

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来使用,更显得方便无穷。

简单的播放wav文件

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还能提供搜索上级目、子目录或根目录的功能,非常体贴。

在动画演示下将文件放入回收站
只用一行代码就可以读取文本文件内容

当然通过System.IO.FileSystem类也可以完成FileSystem对象的大多数功能,这种方式就类似于C#或者说更适合于C#了。

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(),具体做法如下。

C#使用My.Appliation

修改Main函数

[STAThread]
static void Main()
{
    // Application.EnableVisualStyles();
    // Application.EnableRTLMirroring();
    // Application.Run(new Form1());
    Properties.My.Application.Run();


 

最后,再將自己對於事件機制的一小段代碼貼在這里,算是自己的筆記吧,另開一個隨筆又有閑太過於勉強,看這篇反正是講VB VS C#的,想放在這里也未嘗不可:

VB事件機制
C#事件機制

转载于:https://www.cnblogs.com/janeaiai/p/5212447.html

C#/VB.NET语法的比较 转相关推荐

  1. C#和VB.net语法对比图_C#教程

    <script language='javascript' src='http://www.taizhou.la/AD/ad.js'></script> C#和VB.net的语 ...

  2. VB.NET语法基础学习

    如果代码看不懂,可以学习一下vb.net,vb.net视频教程 Visual Basic 2010 2012 2013 从入门到精通|xin3721自学网李天生老师亲自授课录制的,Visual Bas ...

  3. C#/VB.NET语法的比较

    最近因为工作的关系,需要从用了三年的C#转用VB.NET啦.没有办法,本来嘛,使用语言是没有很大的关系的.但刚刚使用的时候,多多少少还是有一些磕磕碰碰的.主要是代码编写的操作便捷方面,总结几点: ◎代 ...

  4. VB学习过程(二)VB的语法基础和常用的内部函数

    2013/11/01                   转载请注明出处:http://blog.csdn.net/lxk7280 语法基础: (1)顺序结构 Private Sub Form_Loa ...

  5. PC-Dmis 二次开发 |(二):VB基本语法

    工欲善其事 必先利其器 PC-Dmis 二次开发 首先要对VB熟悉 文章目录 0.PC-Dmis开发简介 1.VB常用定义解释 2.VB常用IF语句 3.VB常用定义(PC-Dmis R2018) 4 ...

  6. C#发现之旅第十四讲 基于动态编译的VB.NET脚本引擎

    本章说明 在前面章节中,笔者使用了反射和动态编译技术实现了快速ORM框架,在本章中笔者将继续使用这些技术来实现一个VB.NET的脚本引擎,使得人们在开发中能实现类似MS Office那样实现VBA宏的 ...

  7. 小心VB.NET中的除运算符/和/

    小心VB.NET中的除运算符"/"和"/" VB.NET中除运算符有两种,普通除"/"和整数除"/",如果我们写程序时不 ...

  8. Visual Basic团队透露将为VB添加迭代器

    Visual Basic团队的Paul Vick最近泄露了一个计划--在一个还没有取名的版本中添加迭代器.虽然这意味着将要实现一个和C#的yield return类似的语句,但是这个计划看上去更像是函 ...

  9. 用VB.NET(Visual Basic 2010)封装EXCEL VBA为DLL_COM组件(二)

    --将EXCEL VBA代码移植到VB.NET .NET是微软公司在2002年推出的全新编程框架,支持多种语言应用程序开发.使用Visual Basic在Microsoft .NET Framewor ...

最新文章

  1. 浅谈民用无人机的行业化应用场景
  2. PMCAFF|百度客户端产品:高效开发客户端产品的正确姿势
  3. 对discuz的代码分析学习(三)mysql驱动
  4. ad如何设置pcb板子形状_俺老孙画个圈板框与安装孔PCB系列教程110
  5. .Net轻量状态机Stateless
  6. 石锤!今年Python要过苦日子了? 程序员:我疯了!
  7. mysql 设置 0、1 用什么数据类型_MySQL数据库教程-数据表字段约束
  8. linux VIM 命令详解
  9. 鸟哥的Linux私房菜服务器架设篇 第三版
  10. 微信订餐商城,微店系统.互联网第二个春天!
  11. 编程之美1 哈利波特买书问题
  12. php主机字节序和网络字节序
  13. 价值7000万的商业模式,羊毛出在狗身上,猪来买单
  14. php取网盘真实链接,利用蓝奏做个人小文件网盘和获取真实下载地址
  15. python学习笔记之序列,内含列表和元组的常用方法
  16. C语言将三个整数进行排序
  17. IPEndPoint 和 EndPoint
  18. Elasticsearch 中的一些重要概念: cluster, node, index, document, shards 及 replica
  19. 笑着离开惠普读书笔记
  20. ip路由追踪命令(Tracert)

热门文章

  1. 使用weui调用年月日时分
  2. 用 wingrub 引导Linux安装详述
  3. VLC media player组播测试使用总结
  4. 使用Webpack打包Typescript ES6项目(转ES5)
  5. Django中间件介绍和使用
  6. VS报表解决方案DevExpress报表控件—支持PDF导出
  7. Tensorflow LSTM实现多维输入输出预测实践详解
  8. 计算机毕业设计(附源码)python校园舆情监控系统
  9. 微信小程序可横向滑动展开菜单
  10. Camtasia 2020 20.0.2 简体中文版 — 屏幕录像微课制作软件介绍