写给VB.NET新手的入门介绍
vb.net吧
全部回复
仅看楼主
level 10
这是一篇我很早很早以前写的文章,以前一直作为置顶文。但是之后不知道为何被百度删了,我也找不到以前的文档记录。所以就根据现在的情况,稍微删改一些内容,重新发布出来,算是给想学.NET的新手一些启示吧。
在网络上,C#的教程、文档、讨论比比皆是,但是VB.NET的教程(特指优秀的)却寥寥无几,至少我自学VB.NET就从来都没有从这些教程中受益过。
国人追逐潮流之风愈加严重,大部分的程序员在听说过C#是专门为.NET环境所设计的语言之后,就“义无反顾”地投入到了C#的怀抱中去了……
很不巧的,我却爱上了VB这门语言,对于C#的食古不化感觉厌恶至极(指语法上,我太讨厌花括号和分号了)。
说实话,.NET明显被某些人恶意夸大了功能,至少在他们唾沫横飞地夸夸其谈.NET的某某优点时,却支口不提或者故意隐匿了.NET的缺点。
我个人觉得.NET程序最大的缺点就是性能,别听信那些专家所说的“微软做了很多工作,让.NET程序比机器程序性能上并没有太大损失”,这是唬人的。
虽然目前大部分的用户机器配置,都可以很快的启动和运行一般的.NET程序,但是一些大型软件,对性能要求较高的程序,都极少使用用.NET作为开发语言。
.NET程序比用C++或VB6所写出的程序占用的内存和启动程序都要高很多,而且还需要安装.NET框架才可以运行。
目前主流的.NET框架有2.0、3.5、4.0、4.5,低版本程序可运行在高版本框架内,但高版本程序就无法运行在低版本框架。
不过目前所有的新版本Windows系统都会集成.NET框架,作为兼容性和稳定性最好的,我个人推荐使用2.0版的框架作为程序开发。
另外,开源框架Mono,可以作为非Windows系统下的.NET程序框架和运行环境,用于开发安卓手机应用及Mac或Linux操作系统的.NET程序。
虽然.NET并不如JAVA开放,不过其在拥有MONO这种开源运行框架之下,其应用途径还是比较广泛的。
还有一个不得不提的致命缺点,就是.NET程序的代码安全性。.NET编译器所生成的代码并非是机器语言,而是一种类似汇编语言的中间代码,它在运行时被装载到系统中一个.NET运行解释器中进行即时编译(这就是性能问题的原因所在),所以这造成了一个问题——代码容易被反汇编。
在微软官方发布的SDK中,就有一个反汇编.NET程序的小工具ildasm。还有其他比较好的反编译工具如.NET Reflector、Telerik JustDecompile等,甚至可以直接查看程序集内代码。
想要保护.NET程序代码,除了使用代码混淆器,也可以使用一些“虚拟机”外壳程序,不过这些工具都是治标不治本,很难保护.NET程序不被破解,或代码不被窃取。
因此,.NET不是一个好的商用软件或共享软件的开发语言,而只是一个能快速开发或作为网络服务的语言,你可以使用.NET利用以前十分之一的时间写出一个完整功能的小程序,或者将关键代码放到自己的服务器中,使用客户端程序与服务器连接而产生具体实现功能,但不要指望使用.NET开发的共享程序让你的荷包鼓起来。
说了这么多坏话,如果你没有立刻掉头离开,并决定选择这一门语言(或者说环境更恰当)的话,那么恭喜你,你将体验到简单编程的快乐!
.NET程序更像是脚本语言,就它所生成的中间语言代码而言,它本身也属于一种低级脚本语言。
想当年微软发布第一个.NET开发环境VS.NET(VS2003)时,最让人眼前一亮的不是脱胎换骨的VB.NET,而是新出生的C#。就当时而言,VB.NET虽然增加了完整的面向对象的环境,但却在某些细节上输给了C#,比如缺乏无符号类型整数,没有summary注释,没有运算符重载,在底层处理上不如C#,无法使用指针……
当然,那是当年的事。现在的VB.NET已经紧随C#的升级而改变了,虽然在底层的处理上仍然不如C#(VB还是没有指针),但一些其他的缺点已经被克服了。VB.NET现在是一门很完美的.NET编程工具,虽然有人抱怨VB的关键字太长,而且代码冗余,但就通俗明了、简单易学和“傻瓜式”的编程方法,可以让我们省却很多的时间。
指出一些VB拥有而C#没有的功能你就会明白:VB拥有智能变量类型推理,隐藏式的自动数据转换,后期对象绑定,代码编辑时的后台智能编译,拥有众多VB6保留下来的方便的功能函数,My扩展……
就我看来,VB.NET并非不敌C#,而是很多人都迷失在了追逐潮流中。
再来一点,VB和C#都一样,都是依托于.NET框架,所以在很多功能上,它们都是调用同一个框架内的类型和函数才得以实现的。就语法上的不同,存在于编译器不同的解释上。如果你多多研究.NET程序的中间语言,就会发现,其实在VB中实现C#的功能,也并非难事,只是微软尽力隐藏了这些功能,让VB停留在BASIC之上,这是微软固有的营销策略。
废话扯了这么多,现在该谈谈如何入门了。
只要选一本好的VB.NET教程?如果你有那样的教程,拜托请附送给我一本。
别去书摊上买《VB.NET从入门到精通》这一类的书籍,多是些官话、废话,对于没有编程经验的新手来说毫无用处。最好的教程是微软的MSDN——程序员开发文档。
将Visual Basic 的指导教程和类型概念仔细通读一遍,并将所有源代码编写一次,理解其中的概念,那么基本的东西你也就掌握得差不多会了。
再然后是了解VB.NET的所有关键字功能,对于暂时不了解的或者不急着会用到的可以放一下,以后再回头来看。
最后,也是最漫长的,就是开始熟悉.NET框架。所有.NET程序的功能都被包含在了这个框架中,我们的.NET程序中的大部分功能将依托于这个框架。你得了解一些常用的命名空间、类型和借口,并熟记一些常用的静态方法(函数)。
如果进行窗体开发,需要仔细了解Windows.Forms命名空间内的类型;
如果需要与系统或者其他WIN32程序进行交互(比如COM),那么就要开始研究Runtime命名空间;
如果是网络开发,就需要研究Web命名空间;
如果是数据开发,就需要研究Data、XML命名空间……
最后的最后,恭喜你,终于成为了一个高手,那么我们将要开始进入.NET的核心高级开发技术,比如反射(动态类型加载)、比如CodeCOM(动态源码生成),比如MSIL(中间语言)的汇编与反汇编。
简单来说,使用.NET,我们不需要了解更多的系统底层知识,就可以快捷方便地开发桌面、数据库、网络应用程序,它在牺牲了性能和硬盘的空间之后,可以为我们提供强大的功能支持。
如果你想要掌握一门主宰未来,并且是一门拥有完整功能且简单易学的语言的话,那么VB.NET是你最好的选择。
到最后的最后,某一天,你会突然发现,什么VB.NET,什么C#、J#,都是一样,只不过是叫了个不同的名字,它们傍的都是同一个大款。这些编程语言在实现细节中有大部分都是相同的,你会突然顿悟,不过是一个王八换了件马甲……
这只是我自学两年VB的见解。
说实话,我学编程也只是为了好玩儿,因此也没有放太多的精力于此,所以肯定有一些不太
正确的
观点,请大家多多指正。
PS:这篇教程是在VB2008的基础上阐述的,所以之后版本所添加的一些新功能并没有讲解,请各位新手根据自己所学习的版本慢慢摸索吧。兴趣才是你最好的老师!
2014年11月07日 18点11分 1
level 1
呵呵。。。。
基本上认同楼主的观点。
我是从BASIC学过来。最早,是小霸王上的QBASIC,再到就是VB6,从来都是业余人员。没有认真、系统地看过一本编程相关书。
但这不挡不住我已用我的VB写过几个像模像样的程序,卖过近百万元了。
也就是说,除去时间成本,我用VB赚了近百万了。呵呵。。。。。
去年才开始碰vb.net呢。。。。。还是那么的不熟悉。。。还是一句一句地学着用。但,百度大神已能帮到一个新手了。

太太
上周末跟我学了一下。也下了个精简版的VB6.写起来了。
2014年11月10日 11点11分 2
[呵呵]大牛
2014年11月16日 13点11分
现在在一家制造业用.net,但是用到的只是改改产线的需求,自己想学点.net的领域核心的东西,但不知道怎么学
2014年12月07日 10点12分
问下LZ卖软件的平台是什么?我现在找不到一个靠谱的平台啊,或者你是怎样把软件卖出去的?
2015年02月07日 10点02分
几个vb程序就能卖百万啊?
2015年04月24日 03点04分
level 13
指出一点错误:智能变量类型推理(Option Infer)在c#有等效的方式实现。
比如
Dim a = New System.Text.StringBuilder
在c#可以写为
var a=new System.Text.StringBuilder();
2014年11月16日 07点11分 3
level 2
怎么没人顶啊
2014年11月20日 12点11分 4
level 12
指出一点错误:晚期绑定(文中的后期对象绑定)在c#中有等效的方式实现。
比如
Button1.Tag= New Point(10,10)
'VB.Net
Dim pt = Button1.Tag
Msgbox(pt.X)
//C#
dynamic pt = Button1.Tag;
Messagebox.Show(Pt.X);
2014年11月22日 11点11分 5
@Nukepayload2 哈哈
2014年11月22日 11点11分
.Net3.5及以下版本不支持
2014年11月22日 11点11分
回复 刘大王111 :Messagebox.Show我记得第一个参数是String,你忘记加ToString了
2014年11月22日 16点11分
不支持mono 3.7。用了就闪退。
2014年11月22日 16点11分
level 13
我记得这个吧有人抱怨
c#有个写法,直接用new就能调用里面的函数,不必写变量名。
new Form().Show();
其实vb.net早就行了
Call New Form().Show
网上一些博客更邪乎,2013年发的博客说vb.net没Using,没这没那的...明显没仔细看msdn就胡乱复制了错误的观念。
2014年11月22日 16点11分 6
学习了,不过为什么行呢
2014年11月23日 05点11分
回复@刘大王111 :你查vb6的教程就知道怎么回事了
2014年11月24日 04点11分
回复 Nukepayload2 :我那本没有啊,语言怎么表达?
2014年11月24日 11点11分
回复 刘大王111 :那你翻一下msdn
2014年11月24日 23点11分
level 12
再指出一点错误,并非能看到程序集内代码,reflector等软件只是把MSIL转换成了近似的vb.net代码语言。在其生成的代码中,会把不少语法糖重新变回繁琐的完整代码。举一个c#的例子,
这个lambda表达式(a,b)=>return false被反编译会成为
delegate(int a, string b){return false;}
这是从IL转回来的证据
2014年11月23日 12点11分 7
level 1
我是一个准备开始学vb6.0的小菜鸟,现在就连一个适合我学习的软件下载地址都找不到,只求各位前辈给一个vb6.0的下载地址,适合win7 32位系统的!谢谢!请好心前辈发我邮箱[email protected]
2014年12月06日 10点12分 9
去vb吧,有专门的资源帖。。。。。你走错门了。。。
2015年05月19日 05点05分
2015年08月07日 02点08分
level 12
指出一点错误
现在,mono已经解散,目前mono的继承者是xamarin
2014年12月26日 04点12分 10
你们也是够了,还给不给吧主面子[滑稽]
2015年08月31日 08点08分
这玩意是基于c#的吧
2017年10月03日 15点10分
level 5
学习了一段时间总觉得一直在徘徊 是要学JAVA 还是继续我的VB 哎 纠结
2015年01月23日 04点01分 11
level 9
作为一个初学者,我觉得吧,vb就是字符太多,打得手都酸
2015年02月03日 07点02分 12
level 1
楼主大神,在吗??求解决问题啊,有偿帮忙的!
2015年02月07日 15点02分 13
level 7
新手 谢谢大神指点
2015年03月15日 08点03分 14
level 2
MSDN的确是程序员最好的工具。想创造出优秀的软件,成为一个高手,代码量的积累是必不可少的。MSDN上的是比较易懂帮助理解的代码段,可以选择型的模仿。
2015年04月14日 02点04分 15
大神,我是新手 请问在哪里能找到 MSDN?
2015年05月11日 13点05分
@samuelrango 在你编写的程序不懂的地方,把光标放上去,然后按F1.联网的情况下。
2015年05月15日 12点05分
level 1
俺是小白,不过认为好的入门教材也值得一看
2015年05月07日 07点05分 16
level 1

2015年05月11日 13点05分 17
level 10
我觉得微软的补丁才是net框架最大的敌人,[滑稽]
2015年05月19日 05点05分 19
level 2
楼主,这两个问题怎么解决[啊]
2015年06月18日 08点06分 20
level 9
顶,现在编程就像玩游戏一样,好玩[吐舌]
2015年06月20日 03点06分 21
1 2 3 尾页