C#相比VB.NET在某些项目中更为适合的原因是什么?
性能? 功能? 库/组件? 声誉? 可靠性? 可维护性? 易用性?
基本上,C#能做到的事情,使用VB就不可能实现,反之亦然。在选择C#或VB进行项目开发时需要考虑这些因素。
C# 和 VB 基本相同,但有一些细微的差别。除了明显的语法差异之外,还有以下差异:
C# 的语法遵循与 C 和 Java 类似的语法规则,这使得从这些语言过渡到 C# 更加舒适,而 VB 则更适合 VB 用户。就性能、库或组件而言,它们几乎是相同的。
至于选择哪种语言,请选择最符合您习惯的语言,除非您需要执行不安全操作。经过多年的 VB 开发,我喜欢不必再编写 If yadada then.....End If if (yadaya){....} 这样冗长的语句,这节省了我的手指打字时间(这些时间可以用来回答 Stack Overflow 上的问题)。
刚刚了解到 C# 和 VB 的另一个区别是,VB 支持过滤异常,因此您可以使用以下伪代码:
try
{
//do something that fails
}
catch(Exception ex when ArgumentException,
ArgumentNullException, FormatException)
{
//Only handle these three types
}
这与以下能力不应混淆:
try
{
//something that fails
}
catch(ArgumentException)
{
//Log Error
}
catch(ArgumentNullException)
{
//Log Error
}
在这种情况下,你可以在VB中定义一段代码来处理多种类型的异常。
还有一些差异。
c#
if (foo is FooObject){}
vb
If TypeOf foo is FooObject then
我认为Kathleen Dollard在她的博客文章中提供了关于这个问题的优秀概述:
她的第一个建议是:
1) 克服尊重障碍或在开始之前放弃。VB是一门很棒的语言。
在极客圈中赢得信任。
(而且不要假装这不重要!)
其他人已经涵盖了很多区别 - 正如多次提到的那样,它们是几乎等效的语言。以下是我所见过但未涵盖的一些差异:
VB9具有:
C#3具有:
我认为还有更多,但我想把它们加入到混合中。
绝大多数.NET代码示例都是用C#编写的!
Namespace namespace1
Public Class class1
End Class
End Namespace
如果在C#中你有一个名为namespace1的默认命名空间,并且你在文件中这样使用它:那么你将不得不把它称为namespace1.namespace1.class1。
namespace namespace1{
public class class1{}
}
VB对错误的反馈更好。在C#中,您需要更频繁地编译以获取语法中的所有错误。
String lastName as String
并想知道为什么它从未编译过!