VB.net 和C#.net 各有啥优缺点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VB.net 和C#.net 各有啥优缺点相关的知识,希望对你有一定的参考价值。

VB.net 和C#.net 各有什么优缺点 ,哪个比较有前途,本人想学一门.net语言,不知道学哪个比较好,高手指点啊

C#.net优点:

运算符重载。不安全代码(指针和固定内存区)、 无符号整数、移位运算。

VB的优点: 

即时编译、静态事件绑定、条件异常捕获、COM兼容类、宽松的类型检查和变量声明、Visual Basic Runtime库、可选参数、带参数属性、模块等语言特征、动态数组。

通过VB.NET开发好的程序绝对没有问题(包括Direct X游戏开发)。虽然VB.NET的资料少,但是只要C#支持的VB.NET都支持(大体上这样,因为都要经过MSIL中间环节。除了指针之类的VB.NET不支持C#支持,但是没有多大实际用处)。

vb.net的资料以英文资料居多(只有英文资料才有看头,中国的没有什么好资料),得看看英文水平过不过关。还有VB.NET的ide也比C#的IDE好得多,代码看得也舒服。(C#的大括号{}太烦人)。

至于VB6对C的帮助,只是理解上会容易一些,其它用处不大。有VB6的基础学VBNET会方便一些,但是并不是会VB6就会VB.NET,它们差别也不小。

扩展资料:

NET、C#和ASP.NET之间的区别 :

1、NET是一个平台,一个抽象的平台的概念。

NET 平台其本身实现的方式其实还是库,抽象层面上来看是一个平台。

基本可以理解的NET核心就是NETFramwork。

NETFramework包括两个关键组成元素:

a. CommonLanguageRuntime,公共语言运行时(CLR0)-提供内在管理,代码安全性检测等功能。

b. NETFrameworkClassLibrary,.NET 框架类库(FLC)-提供大量应用类库,提高开发效率。

学习NET Framework 是所有.NET开发人员都必须的,否则开发NET程序永远都是停留在‘外功’的招式,NETramework 是NET开发高手的‘内功’修行之一。

2、C#是一个程序设计语言,仅仅是一个语言。

程序设计语言仅仅是为了方便开发人员和计算机沟通的工具,虽然 C#语法相对 C 和 C+要多一些,但是相对来看 C#语法都比较固定,这样使用起来却都很容易。我认可一位朋友说的,C#的语法更严谨!

这里回过来看看NET和C#的关系,不得不提的是NET程序的执行过程。

C#符合NETCLR 中的公共语言运行规范。CLS:commonlanguagespecification,当然所有的NET Language 都是符合这个规范的例如:VB.NET、XAML 和 C++/CL等等。

C#需要符合NETCLS,是因为NETCLR和JAVA虚拟机类似,有一个中间语言共机器来执行。所有不同语言的.NET代码在执行前会被编译成同样的中间语言(MSIL),所以所有NET 支持语言都必须符合符合CLS 规范。

P.S:如果做.NET3.0XAML开发的朋友,可以尝试下ildasm.exe看看XAML的应用程序,会发现原来 XAML其实很简单。

3、ASP.NET是一个网站开发的技术,仅仅是.NET框架中的一个应用模型。

用微软公司ASP.NET快速入门中的一句话来解释,ASP.NET是用于生成基于Web的应用程序的内容丰富的编程框架。

ASP.net 和C#的区别:

编写asp.net通常包括两部分的代码:网页层和后台处理层,网页就是用标记语言来写的,而网页对应的后台处理程序则需要.net语言来完成,目前主要是采用c#和vb.net。

可以说整个的asp.net网站通过c#或者vb.net来实现。而c#则是ms .netframework的主要语言,可以用在网站,桌面应用等方面。可以算是一种比较流行的编程语言。

参考技术A Visual Basic.net还是C#

——如何选择.net语言

在.net中,如何选择VB或C#?这似乎已经争论了很久。很多人盲目选择,也产生了许多流言和错误。本文将从以下方面指导你选择正确的开发语言。

功能上的考虑

许多人认为C#的功能比VB.net强大,或者C#更加适合.net等。其实这不是一两句话能比较清楚的。C#的确有VB无法完成的功能,但VB也有C#无法完成的功能。总的来说,对于.net开发,VB和C#没有任何差别,都100%兼容于CLS。下面列出的是他们语言功能上的不同,这些仅仅是语言实现上的问题,不会影响到生成的代码。打*号的内容与CLS不兼容。

C#有而VB没有的功能:

1、 运算符重载。*

2、 不安全代码(指针和固定内存区)。*

3、 无符号整数。*

4、 移位运算。

VB有而C#没有的功能

1、 即时编译。

2、 静态事件绑定。

3、 条件异常捕获。

4、 COM兼容类。*

5、 宽松的类型检查和变量声明。

6、 Visual Basic Runtime库。

7、 可选参数、带参数属性、模块等语言特征。*

8、 动态数组。*

可见,实际上功能更强大的是VB而不是C#。不过它们不一样的地方多半是无关紧要的特征。总体上来说,不应从功能上选择VB或者C#,因为他们没有什么具体的差别。

性能上的考虑

性能是程序员最关心的问题。VB和C#都生成一样的IL,因此理论上说不会有性能的差异。但许多人为什么说C#的性能高于VB.net呢?这是因为VB.net支持即时编译,就是一边书写代码一边编译。这样可立刻发现语法错误,使调试变得更加容易。但是这样一来VB就需要随时浏览整个代码文件,并把临时数据储存。这造成VB.net生成的代码中常常具有冗余部分。但也不能就此下结论说VB比C#慢,当用户选择打开优化并且以Release方式编译工程,就能得到与C#一样简短快速的代码。

学习上的难度

这部分不仅仅初学者需要考虑,那些从现有开发工具转移到.net的开发人员也需要考虑。首先,VB和C#都是非常简单的,对于初学者来说,VB提供伸缩性更强的空间,因此比C#更加易于接受。但这只是相对而言,C#对于初学者来说也不会有太多的困难。

对于使用Visual Basic6或其他版本的程序员来说。VB.net的语法显然要比C#更加接近VB6,网上流传的VB与VB.net差别被过分夸大,使部分程序员退缩。其实VB.net增加的只是面向对象的思想,许多VB程序员不具备完善的面向对象编程开发经验,因此觉得VB.net难以接受,这是很容易克服的。想想看,即使你要使用C#不也得学习面向对象吗?至于有C/C++/Java经验的人,C#是小菜一碟。刚才说过C#和VB实际上都很简单,所以不见得VB程序员学习C#就要比C/C++程序员来的困难,反之亦然,有C/C++经验的人也可以果断的选择VB。

移植现有代码

这一部分是程序员最头疼的部分。但对语言选择有决定性的意义。

从VB6移植代码的程序员,最佳选择就是VB.net,因为其他.net语言没有一种是与VB相似的。而且即使VB6的工程移植到VB.net非常困难,也有一个移植向导可以帮助你完成大部分工作。如果手工把他移植到C#,需要白白花费大量的时间。而且刚开始使用C#的VB程序员通常都会为C#缺少他们熟悉的函数而头疼。VB.net不会出现这种情况。

从ASP移植到ASP.net,首选语言仍然是VB.net,因为多数程序员使用的ASP语言是VBScript,只有VB.net最大程度地接近这种语言。

C#对于移植代码似乎没有作用,了解C#的人都明白,把现有C/C++代码放到C#中运行几乎是100%不能通过的。所以,如果需要移植C/C++代码,最好使用Visual C++.net。他做到了最好的新旧结合。C#仅仅用于编写新的.net应用程序。

如果需要从Java移植代码,C#可以选择。同时还有J#及其他一些MS提供的转换工具。

文档和资源方面的考虑

在MSDN文档中,C#和VB是同等看待的。所有文档和例子都是有VB和C#两份的。因此,在寻求资源方面都不用担心。互联网上的资源,C#要多于VB,特别是国内,有倾向于C#的潮流。但是ASP.net的资源VB较多。国内缺乏VB.net资源是影响VB.net推广的重要原因。但是在国外有很多非常成熟的VB技术,如掌上设备的开发技术。

代码风格和杂项问题

C#书写的代码比VB平均短小20%,许多人不喜欢VB中过长的关键字。当然他们可以选择C#。但在开发环境中,VB的自动完成功能比C#更完善,其实30%的代码都是自动补充的。因此,实际上VB程序员不会比C#多打多少字。但VB语言换行比C#麻烦,如果需要书写大量繁杂而长的代码,最好选择C#。VB的代码接近完整的英语,比C#更加易读。如果是初学者不妨选择VB。

参考资料:百度

本回答被提问者采纳
参考技术B c#比vb好多了。一句话,vb现在用的人少多了,而c#越来越多。足够的证据说明c#好。 参考技术C 功能上的考虑
许多人认为C#的功能比VB.net强大,或者C#更加适合.net等。其实这不是一两句话能比较清楚的。C#的确有VB无法完成的功能,但VB也有C#无法完成的功能。总的来说,对于.net开发,VB和C#没有任何差别,都100%兼容于CLS。下面列出的是他们语言功能上的不同,这些仅仅是语言实现上的问题,不会影响到生成的代码。打*号的内容与CLS不兼容。
C#有而VB没有的功能:
1、
运算符重载。*
2、
不安全代码(指针和固定内存区)。*
3、
无符号整数。*
4、
移位运算。
VB有而C#没有的功能
1、
即时编译。
2、
静态事件绑定。
3、
条件异常捕获。
4、
COM兼容类。*
5、
宽松的类型检查和变量声明。
6、
Visual
Basic
Runtime库。
7、
可选参数、带参数属性、模块等语言特征。*
8、
动态数组。*
参考技术D 只说一个功能来证明VB.NET的开发效率比C#快
维基百科 部分原文:
Visual Studio provides minor differences in the development environment for C# and VB.Net. With each subsequent release of Visual Studio, the differences between development environments for these languages have been reduced. For instance early versions of Visual Studio had poor support for Intellisense in C# compared to Visual Basic .NET, and did not offer background compilation for C#.[9] Currently, the main differences in the development environments are additional features for Visual Basic .NET that originated in VB6, including:
The default namespace is hidden (but can be disabled)
Certain project files are hidden (the user can show them)
The auto-generated My.* namespaces contain many commonly used shortcuts brought over from VB6, such as methods for operating on the registry and application configuration file
Background compilation is a feature of the Visual Studio IDE whereby code is compiled as it is written by the programmer with the purpose of identifying compilation errors without requiring the solution to be built. This feature has been available for Visual Basic since .NET 1.1 and was present in early versions of Visual Studio for Visual Basic .NET. However, background compilation is a relatively new concept for Visual C# and is available with service pack 1 for Visual Studio 2008 Standard Edition and above. A distinct disadvantage for C# is that the Error List panel does not update until the solution is rebuilt. Refactoring large projects in C# is made more difficult by the need to frequently rebuild the solution in order to highlight compilation errors.[10] Such is not the case with Visual Basic because the Error List panel is synchronized with the background compiler.
Background compilation is less demanding on system resources and results in faster build cycles.[10] This is a particular advantage with large projects and can significantly reduce the time required to start debugging in the IDE.[10]
译文:
visual studio 在 c# 和 vb. net 的开发环境中提供了细微的差异。在 visual studio 的每个后续版本中, 这些语言的开发环境之间的差异都有所缩小。例如, 与 visual basic. net 相比, 早期版本的 visual studio 对 c# 中的 intellisense 的支持较差, 并且没有提供 c# 的后台编译。[9] 目前, 开发环境中的主要区别是源自 vb6 的 visual basic. net 的其他功能, 包括: 默认命名空间处于隐藏状态 (但可以禁用)
某些项目文件是隐藏的 (用户可以显示它们)
自动生成的 my. * 命名空间包含许多从 vb6 引入的常用快捷方式, 例如在注册表和应用程序配置文件上操作的方法
后台编译是 visual studio ide 的一项功能, 通过该功能, 代码在由程序员编写时进行编译, 目的是识别编译错误, 而无需生成解决方案。此功能自. net 1.1 以来已适用于 visual basic, 并存在于 visual basic. net 的 visual studio 的早期版本中。但是, 后台编译对于 visual c# 来说是一个相对较新的概念, 可与 visual studio 2008 标准版及以上的服务包1一起使用。c# 的一个明显缺点是, 在重新生成解决方案之前, "错误列表" 面板不会更新。由于需要频繁重建解决方案以突出显示编译错误, 在 c# 中重构大型项目变得更加困难。[10] visual basic 的情况并非如此, 因为 "错误列表" 面板与后台编译器同步。
后台编译对系统资源的要求较低, 并导致更快的生成周期。[10] 这是大型项目的一个特殊优势, 可以显著减少在 ide 中开始调试所需的时间。[10]

在VB.NET中do while和while有啥区别?

【中文标题】在VB.NET中do while和while有啥区别?【英文标题】:Whats the difference between do while and while in VB.NET?在VB.NET中do while和while有什么区别? 【发布时间】:2013-04-10 02:29:53 【问题描述】:

Do While 语句是循环块中的第一行,与 VB.NET 中的单个 While 有什么区别?

它们似乎没有提供任何行为差异。

【问题讨论】:

没有区别。一个是出于遗留原因。 BASIC 是一种非常古老的语言,而 Vb.Net 仍然带有一些包袱,例如Mid(MyStr, 2) = "Hi"想猜猜这是做什么的? 【参考方案1】:

在 Visual Basic 中这些是相同的:

    Dim foo As Boolean = True

    While Not foo
        Debug.WriteLine("!")
    End While

    Do While Not foo
        Debug.WriteLine("*")
    Loop

这些不是; do 执行一次:

    Dim foo As Boolean = True

    While Not foo
        Debug.WriteLine("!")
    End While

    Do
        Debug.WriteLine("*")
    Loop While Not foo

【讨论】:

为了完整起见:Do While Not … 可以写成Do Until 老实说,我积极避免Do Until。我也看到人们可能会不小心将无限循环扔到生产代码中。 太好了,这就是我想要的解释。 我一直使用“直到”。从来没有遇到过无限循环的问题。您只需要确保在循环期间更新正在测试的变量。如果人们将无限循环放入生产代码中,那么他们就没有正确地对其进行测试。【参考方案2】:

DO...WHILE中,循环内的代码至少执行一次

WHILE循环中,循环内的代码被执行0次或多次

【讨论】:

【参考方案3】:

Do While 首先执行,然后检查是否有效。 While 先检查后执行。

while (1!=1) echo 1 

什么都不输出

但是

doecho 1 while (1!=1) 

将输出 1 一次。

【讨论】:

我不是在问 do while 和 while end while 之间的区别。我说的是 do while 。 在 C# AFAIK 中没有 do while 这样的事情 不,不是,DO WHILE 在同一行,块在下面。 可以,但是逻辑是一样的。 这是 VB 问题还是 C# 问题。

以上是关于VB.net 和C#.net 各有啥优缺点的主要内容,如果未能解决你的问题,请参考以下文章

VB.Net和C#.Net有啥差异?优缺点是啥?

C# 和 VB.NET 的优缺点?

NLog和Log4Net各有啥优缺点

NLog和Log4Net各有啥优缺点

.net web开发有WEBFORM、MVC、EF等来开发,它们各有啥优点和缺点?

在 VB.NET 中调用过程的优缺点是啥?