以前在学校时,编写代码都是使用C#,习惯了C#的代码习惯,等工作后由于工作需要逐渐的开始采用了VB.NET开发项目,渐渐地喜欢上了VB.NET,现在我就罗列一些VB.NET加速代码开发的方法。

一、智能感知

做.NET开发的许多人都知道作为微软.NET中2大语言VB.NET和C#,VB.NET在智能感知上比C#强上许多,

1、自动补完,在VB.NET中如果输入VB.NET关键字,当敲击enter后,VS会自动帮助你补完剩余的代码

比如:输入try等后敲击enter,VB.NET会自动生成

1
2
3
4
5
Try
Catch ex As Exception
End Try

这样程序员就可以不必再输入catch代码,可以直接编写业务逻辑代码(VB.NET中的关键字都会有类似效果,大家有兴趣可以自己尝试)

当然在C#中也可以通过Snippets来完成,但是C#的Snippets大大少于VB.NET,从下图中就可以看出

VB.NET

C#

2、代码自动格式化

在VB.NET中只要敲击enter就会自动对当前文档格式化,无需像C#中需要手动Ctrl+K,Ctrl+F(虽然在C#中写完一段代码VS也会自动格式化但是效果远远比不上VB.NET),这种自动格式化,减少了在书写代码过程中的许多工作量,而且如果碰上一个不喜欢格式化代码的人,VB.NET可以自动帮助格式化,这样后面的人来阅读代码会更加方便。

3、智能感知

在.NET3.5中,添加了linq,我们会经常书写这样的代码,如:

VB.NET

C#

从上图我们可以清楚的看到,VB.NET可以从LINQ语句中自动推断出linq变量的类型,而C#却不行,当我们在书写复杂的LINQ语句时,这种提示是很有用的,而且在foreach等遍历对象时,VB.NET基本上都能自动推断出变量的类型,但是C#不行必须程序员手动的给变量指定类型。

同时,在VB.NET中,还有个好处就是不区分大小写,例如:我们在做ASP.NET开发时由于某些情况下是没有智能感知提示的所以经常需要靠记忆力来书写代码,像在页面中写javascript书写:

1
var txt=document.getElementById(“<%=Text1.ClientID%>”);

来获取文本框的客户端ID,在C#中必须书写Text1.ClientID否则会报错,而VB.NET则可以写成Text1.ClientId。

又比如,在C#编写过程中我们都会要书写using System;来引用命名空间,但是此时如果你直接写using system.这时按“.”智能提示将不会有任何提示,应为system的首字母为小写,必须要将原有的system删除,书写正确的首字母大写的System才行,这种智能感知无法正常提示的情况在C#很常见(当然在VS2010中已经被很好的优化了),而VB.NET就不会出现这样的问题,你在书写的每一步无论你书写大小都能被正确的识别

当然这种智能感知还体现在VB.NET的许多方面。

4、命名空间导入

在C#开发中有件很令我痛苦的就是命名空间导入,每当我新建一个类时我可能就需要重复导入命名空间,这样一个项目下来上百个类得重复导入很多命名空间。而VB.NET则很好的解决了这个问题,当你新建一个VB.NET类或模块,会发现这个类很干净:

1
2
3
Public Class A
End Class

仅仅只有类的定义,没有像C#那样默认导入了几个必备的命名空间,如System,System.Text等,这是因为VB.NET在建立项目的同时已经帮助你引用好了,winform项目可以通过查看项目属性引用中查看 在asp.net可以在web.config中查看到:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<pages enableSessionState="true">
            <namespaces>
                <clear/>
                <add namespace="System"/>
                <add namespace="System.Collections"/>
                <add namespace="System.Collections.Generic"/>
                <add namespace="System.Collections.Specialized"/>
                <add namespace="System.Configuration"/>
                <add namespace="System.Text"/>
                <add namespace="System.Text.RegularExpressions"/>
                <add namespace="System.Linq"/>
                <add namespace="System.Xml.Linq"/>
                <add namespace="System.Web"/>
                <add namespace="System.Web.Caching"/>
                <add namespace="System.Web.SessionState"/>
                <add namespace="System.Web.Security"/>
                <add namespace="System.Web.Profile"/>
                <add namespace="System.Web.UI"/>
                <add namespace="System.Web.UI.WebControls"/>
                <add namespace="System.Web.UI.WebControls.WebParts"/>
                <add namespace="System.Web.UI.HtmlControls"/>
            </namespace>
<pages>

同时你也可以在这引用一些项目共用的命名空间。

二、特性语法,与C#之对比

介绍了VB.NET的一些智能感知特性后,现在我就对VB.NET在特性语法上和C#进行比较

1、代码结尾

VB.NET有个最大的好处,在默认情况下VB.NET换行则表示一行代码的结束,不必想C#一样书写“;”来表示,从某种程度上来说可以稍微提高一些代码的编写速度

2、匿名类型

.NET3.0开始,C#引入了var关键字,这样方便了程序员在定义变量时的麻烦,相对应的VB.NET也有Dim关键字。

在C#中如果要建立一个匿名类型:

1
var people = new { name = "kyo", age = 22 };

VB.NET的写法:

1
Dim people = New With { .name="kyo", .age = 22 }

3、XML

在VB.NET9.0发布的时候,VB.NET的XML编写方式使程序员们眼前一亮,在程序中也可以像普通编写XML一样简单,并且可以以编程的形式进行XML操作,我们现在来对比下VB.NET和C#书写XML的方式

VB.NET:

1
2
3
4
5
6
Dim xml = <peoples>
               <people>
                   <name>kyo</name>
                   <age>22</age>
               </people>
           </peoples>

C#:

1
2
3
4
5
var xml = new XElement("peoples",
                    new XElement("people",
                        new XElement("name","kyo"),
                        new XElement("age",22))
                  );

1

可以看出VB.NET的书写方式完整的实现了XML的结构,一眼就能看明白,而C#则需要靠良好的格式化才能看的出来。

再看一段MSDN中的VB.NET的XML操作例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
' Place Imports statements at the top of your program. 
Imports <xmlns:ns="http://SomeNamespace">
Module Sample1
    Sub SampleTransform()
        ' Create test by using a global XML namespace prefix.
        Dim contact = _
            <ns:contact>
                <ns:name>Patrick Hines</ns:name>
                <ns:phone ns:type="home">206-555-0144</ns:phone>
                <ns:phone ns:type="work">425-555-0145</ns:phone>
            </ns:contact>
        Dim phoneTypes = _
          <phoneTypes>
              <%= From phone In contact.<ns:phone> _
                  Select <type><%= phone.@ns:type %></type> _
              %>
          </phoneTypes>
        Console.WriteLine(phoneTypes)
    End Sub
End Module

1
这段代码实现的效果是查询输出contact中所有的phone的类型。具体的原理大家可以查看MSDN,MSDN中已经写的很详细了。
1

4、可选参数,可选实参

在现有的VB.NET已经拥有了可选参数,可选实参这2个特性,而C#在4.0才加入:

VB.NET:

可选参数:

1
2
3
4
5
6
Public Sub SubA(ByVal a As String, Optional ByVal b As Integer = 0)
    a = b.ToString()
    SubA("kyo")
    SubA("kyo", 2)
End Sub

可选实参:

1
SubA(a:="kyo", b:=2)

C#:

可选参数:

1
public void A(string a, int b = 0)
1
{
1
A(“kyo”);
1
A(“kyo”,2);<br>}
1
可选实参:
1
A(a:"kyo",b:2);

5、语法可读性

在对比了C#和VB.NET的关键字,已经在日常的使用中,我觉得VB.NET的语法更加接近人类的自然语言,可读性也比较强。大家可以从MSDN中对比下VB.NET和C#的关键字,会发现VB.NET的关键字虽然啰嗦了点,但是更加能让人读懂,具体的比较,大家可以从这里查看VB.NET关键字和C#关键字

三、VB.NET的不足

说了那么多VB.NET的好处,现在来说说VB.NET的不足,而且这些不足我个人认为也是比较令人不舒服的:

1、代码着色

C#的代码着色在看的时候令人非常的舒服,各种类型,各种关键字都是用不同的颜色给区分出来,让人一看就知道什么是什么,而VB.NET这点就做的比较糟糕了,整个代码就3种颜色(除去XML编程的颜色)关键字的蓝色,普通代码的黑色和字符串的红色

VB.NET:

C#:

大家对比下就能看出了吧!

2、代码结构

在C#中代码的开始结束都是使用“{}”来表示,看上去非常的简洁,而VB.NET却比较啰嗦了,比如一个方法是sub开始,end sub结束,少的时候还可以接受一旦多了整个代码就感觉太啰嗦了(幸好VB.NET的自动格式化做的非常好)

VB.NET还有个硬伤就是#region代码折叠,在C#中#region可以出现在任何地方,可以把任何需要折叠的代码折叠起来可以在方法体内,也可以在方法外,而VB.NET不行,#region必须是在方法外,只能将方法折叠,不能将方法内的代码折叠,这样如果一个方法体内的代码比较长,这样就无法进行分段折叠了。

四、VB.NET 10.0

VB.NET10.0已经发布了,这次的10改动也是非常的巨大,融合了C#许多3.0的优点,让人心动不已。

1、自动属性

在10.0以前,VB.NET写属性都非常费劲,例如:

1
2
3
4
5
6
7
8
9
Private newPropertyValue As String
    Public Property NewProperty() As String
        Get
            Return newPropertyValue
        End Get
        Set(ByVal value As String)
            newPropertyValue = value
        End Set
    End Property

虽然可以通过来Snippets来减少输入,但是还是比较麻烦,但是在10.0中引入了自动属性,和C#3.0一样,只需1行就可以完成:

1
Public Property A As String = ""

2、隐式换行

书写VB.NET有个比较痛苦的事就是,因为VB.NET是以回车符来表示一行代码结束,但是有时代码太长需要分几行来写以方便阅读,在每行的结尾都需要写“_”来表示换行,这样有时忘写就会报错,但是在10.0中取消了这个该死的“_”,可以直接换行,这样书写代码时就无需考虑换行因素了。

3、局部方法、局部函数

.NET3.0中,引入了lambda表达式,C#可以通过“=>”来表示,而VB.NET则需要通过function(x) code来表示,这样就大大的局限了VB.NET的lambda表达式,因为Function(x)表示一个函数必须有返回值,这样Action<T>在VB.NET中就无法通过lambda表达式使用。而10.0中则新增了局部方法、局部函数:

1
2
3
4
dim action=sub()
           end sub
dim func=function()
         end function

这样VB.NET的lambda表达式功能才算真正的完善

至此本文就已经结束了,虽然只是介绍了一些VB.NET的基本一些特点,还有很多很多VB.NET有特色的东西没讲到。比如My关键字、隐式转换、CInt(CXX)转换,Microsoft.VisualBasic命名空间等等,具体的还是要大家在日常的使用中去研究,希望大家能真正喜欢上VB.NET。

本文如有不好请见谅,因为本人还是一个菜鸟。

本文转自kyo-yo博客园博客,原文链接:http://www.cnblogs.com/kyo-yo/archive/2010/05/12/Quick-Programming-using-VB.html,如需转载请自行联系原作者

使用VB.NET加快代码开发速度相关推荐

  1. java vb 速度_使用VB.NET加快代码开发速度

    以前在学校时,编写代码都是使用C#,习惯了C#的代码习惯,等工作后由于工作需要逐渐的开始采用了VB.NET开发项目,渐渐地喜欢上了VB.NET,现在我就罗列一些VB.NET加速代码开发的方法. 一.智 ...

  2. 英特尔® 虚拟化技术(inter VT-X)加快 Android开发,并解决无法虚拟化问题

    介绍 本文将指导您安装英特尔? 硬件加速执行管理器(英特尔? HAXM),这是一款可以使用英特尔? 虚拟化技术(VT)加快 Android* 开发速度的硬件辅助虚拟化引擎(管理程序). 前提条件 英特 ...

  3. 加快Vue项目的开发速度

    加快Vue项目的开发速度 现如今的开发,比如是内部使用的管理平台这种项目大都时间比较仓仓促.实际上来说在使用了webpack + vue 这一套来开发的话已经大大了提高了效率.但是对于我们的开发层面. ...

  4. Android Studio 如何导出和导入自己的常用设置,避免重复制造轮子。加快开发速度...

    Android Studio 如何导出和导入自己的常用设置,避免重复制造轮子.加快开发速度 作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 在使用 A ...

  5. Android开发之制作圆形头像自定义View,直接引用工具类,加快开发速度。带有源代码学习

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 QQ986945193 博客园主页:http://www.cnblogs.com/mcxiaobing ...

  6. Android开发之制作圆形头像自定义View,直接引用工具类,加快开发速度。带有源代码学习...

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 QQ986945193 博客园主页:http://www.cnblogs.com/mcxiaobing ...

  7. HighNewTech:低代码(0代码/无代码,无需代码)开发的简介以及如何选择最合适的低代码开发工具

    High&NewTech:低代码(0代码/无代码,无需代码)开发的简介以及如何选择最合适的低代码开发工具 导读:在互联网时代,博主经常反思一个问题,如何跟进这个快速发展的时代才能不会被淘汰?博 ...

  8. Mendix:低代码开发平台 让未来工作模式日渐明朗

    编辑 | 宋 慧 供稿 | Mendix 出品 | CSDN云计算 在深受疫情影响的2020年之前,为了更好地满足快速发展和业务扩展需求,企业软件领域出现了很多关于现代化.自动化和数字化转型的学术性讨 ...

  9. 加速Java应用开发速度3——单元/集成测试+CI

    大家可能对如下情景比较熟悉: 如果开发过SSH的web项目,启动服务器可能会比较慢,有的项目甚至需要1分多钟,甚至更多,这个启动时间的等待一般就浪费了: 在开发项目时,有些功能比较复杂,当时觉得思路特 ...

最新文章

  1. 循环冗余码CRC使用matlab实现
  2. Linux删除整行命令
  3. 控制台打印_SpringBoot2.0 基础案例(02):配置Log4j2,实现不同环境日志打印
  4. 算法的时间复杂度(python版容易理解)+常用的时间复杂度、python代码--数据结构
  5. JavaFx loading 数据加载中效果
  6. python123随机密码生成器_python实例--随机密码生成器
  7. Linux 摄像头驱动
  8. 3.2 基本数据类型
  9. 深入分析Zookeeper的Leader选举原理
  10. c语言重复测试,C语言检测过零的方法--等待过零检测法
  11. WinRAR压缩软件去除广告
  12. 蓝桥杯算法训练之印章
  13. 笔记:分布式大数据技术原理(一)Hadoop 框架
  14. android 图片轮播sli,又一个安卓slider/seekbar – android-slidr
  15. 如何上传本地代码到github仓库
  16. mysql hint是什么_mysql hint是什么意思
  17. 【JS】两个等号和三个等号的区别
  18. 记武汉疫情期间的一次数据库和翻译记忆库的数据恢复 (一)
  19. 数码照片的文件高级信息获取
  20. 计算机学科 集体备课记录,科学组集体备课记录

热门文章

  1. [转]c# 泛类型(泛型) 以及强类型与弱类型的 理解及优化
  2. 最短路径 - dijkstra
  3. C#动态加载DLL(转)
  4. Java的List和Json转换以及StringRedisTemplate往redis存泛型对象
  5. “重置”不是“清空”
  6. ASP.net 验证码(C#)
  7. 在分页状态下删除纪录的问题
  8. java 贝叶斯抠图_贝叶斯抠图
  9. mysql数据库移植到另一台电脑,将mysql数据库从一台计算机复制到另一台计算机...
  10. ue4蓝图节点手册中文_在UE4中播放视频