我的公司正在考虑在.NET 4发布时使用Entity Framework。我们目前是VB.NET的开发环境,但有一些兴趣转换到C#。
这样做有什么主要的赞成或反对的观点吗?
相比VB.NET,EF与C#是否在性能、编码易用性等方面具有优势?
感谢您的想法/意见!
我的公司正在考虑在.NET 4发布时使用Entity Framework。我们目前是VB.NET的开发环境,但有一些兴趣转换到C#。
这样做有什么主要的赞成或反对的观点吗?
相比VB.NET,EF与C#是否在性能、编码易用性等方面具有优势?
感谢您的想法/意见!
如果说实话,我其实对vb.net有一种不合理的厌恶,我更喜欢c#的语法,但是没有什么强制性的理由让我去切换。它们都编译成IL,只有微小的差异,并且同样具备能力。
我想最有说服力的原因可能是,招募高质量的c#开发人员比vb更容易。
我不想告诉人们不要学习C#,因为说实话,我希望很早之前就从VB.net转到C#。我喜欢这种加密的语法,因为我有C/C++背景。由于一些内部应用程序,我不得不处理VB.net一段时间。所以这是个人偏好,你可能会更快地在VB.net中实现所有的东西。但如果你的公司愿意让你们学习一门新语言并投资于你们的知识,那我建议全力支持C#。
我认为你最大的问题不在于性能或能力上的差异,而是文档。MSDN可能会提供两种语言的功能,但大部分博客文章等都是用c#编写的。这些文章可能提供实际开发中的最佳实践、技巧和其他信息,这些内容将在你的开发实践中起到重要作用,而大多数内容都是用c#编写的。
在.NET 4.0中,VB.NET和C#具有完全相同的功能。唯一的区别就是语法。在4.0之前,情况并非如此,因为存在一些细微的差异。然而,微软已经努力使这两种语言变得相同。这将随着4.0版本的发布而实现。
对我来说,最有吸引力的区别之一是C#通常具有更简洁的语法。这在lambda表达式中尤为明显。虽然VB.Net现在也具有相同的功能,但我发现VB.Net语法过于冗长。
例如,如果您使用LINQ的“Fluent API”语法:
C#
var addresses = _users
.Where(u => u.Name == "scott")
.Select(u => u.Address)
不可否认,刚开始时语法可能有点奇怪,但一旦你习惯了,实际上这将变得非常易读。与VB.Net相比:
Dim addresses = _users _
.Where(Function(u) As Boolean
return u.Name = "scott"
End Function) _
.Select(Function(u) as Address
Return u.Address
End Function)
编辑: 显然我得到了错误的信息...
上述代码仅在VB10中有效(其中添加了多行Lambda语句),但可以更简洁地编写如下:
Dim addresses = users _
.Where(Function(u) u.Name = "scott") _
.Select(Function(u) u.Address)
如果你主要是VB程序员,C#可能会让你感到困惑;所有那些晦涩的大括号,而不是一个好记的"End Sub"!
在大多数情况下,这两种语言是等效的;它们都编译成基本相同的IL(尽管有时会有差异),因此在性能上也是相同的(大多数情况下)。
底线:这是个人偏好。我更喜欢C#。你可能不喜欢。
没有实质性的区别,现在VB.NET和C#更加保持同步,最终选择取决于你(或你的公司)的个人偏好。
这取决于你所在的团队和技能基础。
在我看来,C#是最好的选择。虽然我可以编写两种语言的代码,但我更喜欢C#。.Net世界似乎围绕着C#转。我认为你们公司会发现有更多熟练的C#程序员,而不是VB.net程序员。
我认为两种语言都可以。我更喜欢C#,因为有更多的C#文档。