以前在学校时,编写代码都是使用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会自动生成
12345Try
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书写:
1var
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类或模块,会发现这个类很干净:
仅仅只有类的定义,没有像C#那样默认导入了几个必备的命名空间,如System,System.Text等,这是因为VB.NET在建立项目的同时已经帮助你引用好了,winform项目可以通过查看项目属性引用中查看 在asp.net可以在web.config中查看到:
123Public
Class
A
End
Class
1234567891011121314151617181920212223<
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
>
栏目列表最新更新nodejs爬虫 Python正则表达式完全指南 爬取豆瓣Top250图书数据 shp 地图文件批量添加字段 爬虫小试牛刀(爬取学校通知公告) 【python基础】函数-初识函数 【python基础】函数-返回值 HTTP请求:requests模块基础使用必知必会 Python初学者友好丨详解参数传递类型 如何有效管理爬虫流量? 2个场景实例讲解GaussDB(DWS)基表统计信息估 常用的 SQL Server 关键字及其含义 动手分析SQL Server中的事务中使用的锁 openGauss内核分析:SQL by pass & 经典执行 一招教你如何高效批量导入与更新数据 天天写SQL,这些神奇的特性你知道吗? openGauss内核分析:执行计划生成 [IM002]Navicat ODBC驱动器管理器 未发现数据 初入Sql Server 之 存储过程的简单使用 SQL Server -- 解决存储过程传入参数作为s 关于JS定时器的整理 JS中使用Promise.all控制所有的异步请求都完 js中字符串的方法 import-local执行流程与node模块路径解析流程 检测数据类型的四种方法 js中数组的方法,32种方法 前端操作方法 数据类型 window.localStorage.setItem 和 localStorage.setIte 如何完美解决前端数字计算精度丢失与数