C#和#x27;s在VB上的优势
C#NET中的哪些内容使它比VB.NET更适合某些项目 性能、能力、库/组件、声誉、可靠性?可维护性?,易用性C#和#x27;s在VB上的优势,c#,.net,vb.net,C#,.net,Vb.net,C#NET中的哪些内容使它比VB.NET更适合某些项目 性能、能力、库/组件、声誉、可靠性?可维护性?,易用性 基本上,任何C#能做的事情,用VB都是不可能的,反之亦然。 在为项目选择C#/VB时,您必须考虑的事情。在早期版本的VB.NET中,差异更为明显,但在当前版本中,没有显著差异 VB直接在代码中支持XML文本,这是C#不支持的。C#支持不安全代码,VB不支持。从技术上讲,这两者是最大的区别。有许多小的变化,但它们并不重要。我更喜欢C#,因为我觉得语法没有那么臃肿。识别代码块很容易,而不
基本上,任何C#能做的事情,用VB都是不可能的,反之亦然。
在为项目选择C#/VB时,您必须考虑的事情。在早期版本的VB.NET中,差异更为明显,但在当前版本中,没有显著差异 VB直接在代码中支持XML文本,这是C#不支持的。C#支持不安全代码,VB不支持。从技术上讲,这两者是最大的区别。有许多小的变化,但它们并不重要。我更喜欢C#,因为我觉得语法没有那么臃肿。识别代码块很容易,而不是看到一堆关键字,但这纯粹是个人偏好 选择您和您的团队更熟悉的选项。C#和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世界中的异常,您可以定义一段代码来处理多种类型的异常
编辑
还有一些不同
if(foo是foooobject){}
vb
如果foo的类型是FooObject,那么
据我所知,这两种语言之间虽然差别很小,但也存在差异。我建议使用您/您的开发人员最熟悉的语言。如果他们已经有VB经验,那么我建议使用VB.Net/反之亦然 虽然我个人更喜欢C的简洁语法: 由于C#和VB.Net都编译成MSIL,所以它们的性能、功能、库和组件几乎相同。反射可以将MSIL代码分解为C#或VB.NET(或许多其他语言) <>这基本上让我们看到,C++看起来很像java和C++,它使它更具可信度。 < P>我最喜欢的VB没有的特征是收益语句。它允许您轻松地从方法返回一个延迟计算的IEnumerable
这里有一篇文章介绍这一点:极客中的街头信誉
(不要假装这不重要!)我认为Kathleen Dollard的这篇博文为这个问题提供了极好的概述: 她的第一个建议是: 1) 忘掉尊重的事,否则就辞职 在你开始之前。VB是一个很好的工具 语言
我认为乔希对语言差异做了一个很好的总结 工具支持 然而,VisualStudio处理这些语言的方式也存在差异。 代码片段更容易从C#编辑器中使用,重构也更好 VB编辑器通过不始终显示所有选项来简化intellisense
我确信还有更多的事情,但这些是我作为一个C#'er(很少使用VB)注意到的。目前VB.Net对lambda表达式的实现非常差。这意味着你不能像在C#中那样做整洁的事情。当然可以,但在大多数情况下,它需要一个非常丑陋的解决方法
这在VB.Net 10.0中得到了解决。VB对错误有更好的反馈。在C语言中,您必须更频繁地编译,以获得语法中的所有错误 VB.Net有一个根命名空间,而C#有一个不同的默认命名空间。因为当你在VB.Net中有一个根名称空间时,它总是在名称空间之前添加它 例如:如果您在VB.Net中有一个名为namespace1的rootnamepsace,然后将其添加到文件中
Namespace namespace1
Public Class class1
End Class
End Namespace
namespace namespace1{
public class class1{}
}
然后您必须将其称为namespace1.namespace1.class1
在C#中,如果您有一个名为namespace1的默认名称空间,并将其保存在文件中
Namespace namespace1
Public Class class1
End Class
End Namespace
namespace namespace1{
public class class1{}
}
那个么你们仍然可以把它称为名称空间1。其他人已经涵盖了很多不同之处——正如已经说过好几次的,它们几乎是等价的语言。就我所见,有一些差异尚未涵盖: VB9具有:
- XML文本
- 可变匿名类型(urgh)
- 语言中更多的LINQ支持(C#仅涵盖少数运算符)
- 语言中大量额外的位被编译成调用
Parallel.For(1, 10000, Sub() _ ' Do something ' End Sub)
String lastName as String
Button1.Color() = Color.Red Button1.Color = Color.Red