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
在网络上,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的基础上阐述的,所以之后版本所添加的一些新功能并没有讲解,请各位新手根据自己所学习的版本慢慢摸索吧。兴趣才是你最好的老师!

