实体框架-C#或VB.Net
当.NET4问世时,我的公司正在考虑使用实体框架。我们目前是一家VB.NET商店,但对切换到C#有些兴趣 是否有支持或反对这一举措的主要论据?实体框架-C#或VB.Net,c#,vb.net,entity-framework,.net-4.0,C#,Vb.net,Entity Framework,.net 4.0,当.NET4问世时,我的公司正在考虑使用实体框架。我们目前是一家VB.NET商店,但对切换到C#有些兴趣 是否有支持或反对这一举措的主要论据? 与VB.NET相比,EF和C#在性能、编码易用性等方面是否有任何优势 谢谢你的想法/意见 我总是说坚持你擅长的。如果从vb.net到C#有一个很大的学习曲线,那么可能会有风险。我是一名vb.net程序员,但转行到C#,我觉得这并不难。但是,如果您正在开发一些需要每日更改/修复的健壮软件,您可能希望坚持您擅长的东西(在本例中为VB.net) 在比较实体框
与VB.NET相比,EF和C#在性能、编码易用性等方面是否有任何优势
谢谢你的想法/意见 我总是说坚持你擅长的。如果从vb.net到C#有一个很大的学习曲线,那么可能会有风险。我是一名vb.net程序员,但转行到C#,我觉得这并不难。但是,如果您正在开发一些需要每日更改/修复的健壮软件,您可能希望坚持您擅长的东西(在本例中为VB.net) 在比较实体框架的两种语言时,您不会发现有太大的差异。如果您更喜欢带有匹配的结束子节点的公共子节点(更冗长,更详细),那么请使用vb.net。如果你喜欢{}并且不太冗长,那么你更喜欢C#
我不喜欢告诉人们不要学C,因为老实说,我希望我早就从VB.net改成C了。我喜欢这种神秘的语法,因为我有C/C++的背景。由于一些内部应用程序,我不得不处理VB.net一段时间。因此,这是首选项,您可能会很快在vb.net中实现所有功能。但是,如果你的公司愿意让你们学习一门新语言,并投资于知识,那么我建议你们一直学习C。没有实质性的区别,而且现在VB.NET和C将比以往任何时候都更加同步,所以这实际上取决于你(或你的公司)的偏好。使用.NET 4.0,VB.NET和C#具有完全相同的功能。唯一真正的区别是语法。在4.0之前,情况并非如此,因为存在一些细微差异。然而,微软已经在努力使这两种语言保持一致。这将随着4.0的发布而发生 如果你主要是一名VB程序员,C#可能会让人困惑;所有这些神秘的大括号,而不是一个漂亮的冗长的“结束子” 在大多数情况下,两种语言在其他方面是等价的;两者编译为基本相同的IL(尽管偶尔会有差异),因此性能相同(大部分情况下)
一句话:这是一种偏好。我更喜欢C。你可能不会 这取决于你所在的团队和技能基础。事实上,我对vb.net有一种非理性的厌恶。老实说,我更喜欢c#语法,但没有令人信服的理由切换。它们都编译成IL,有着非常细微的区别,并且都具有相同的能力
我想,转换的最令人信服的原因可能是,与vb相比,更容易找到和招募高质量的c#开发人员。我认为您最大的问题不在于性能或功能上的差异。我认为这将归结于文件。MSDN可能会提供两种语言的功能,但大多数博客文章等都将使用c#。这些帖子可能会提供关于最佳实践、技巧和窍门的现实指导,以及在开发实践中您将依赖的大量其他信息,其中大部分将在c#中使用。对我来说,最引人注目的区别之一是c#通常具有更简洁的语法。这尤其体现在lambda表达式中。尽管VB.Net现在具有相同的功能,但我发现VB.Net语法过于冗长 例如,如果您使用LINQ“Fluent API”语法: C# 诚然,语法一开始可能有点奇怪,但一旦你习惯了,它实际上变得非常可读。将其与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)
除了丑陋的下划线和
函数
关键字而不是=>
,这基本上是一样的。但仍然更喜欢C#语法;-) 在我看来,C#是一条出路。我可以用这两种语言编写代码,但更确切地说是C语言。Net世界似乎围绕着C#运转。我想你的公司会发现更多的C#代码编写人员比VB.net代码编写人员更熟练。我认为这两种语言都可以工作。我更喜欢c#,只是因为他们有更多的文档是用c#编写的。主席先生,我更喜欢VB6。不!C#::+1因为如此真实,它只是同一输出的不同方言。一个很好的冗长的“End Sub”*spits*;)跟上市场营销的行话,它不再是.0,而只是4;)看看微软的行话。如果他们是一家聪明的公司,他们会减少行话,生产更好的产品。我喜欢他们,但他们仍然需要改进营销术语,不再是。0,只是4;)我为这种冒犯性的疏忽道歉;你可能想接受一个你满意的答案。它帮助人们意识到你的问题已经解决了。这真的有效吗?通常,不管怎样,您都会保留“As Boolean”和“End Function”的内容。对于一行程序来说,VB.NET的语法比C#差不了多少s@Eamon. 正如Eaomon所说,有效的VB并不比C#差多少Dim addresses=_users.Where(Function(w)w.Name=“scott”).Select(Function(z)z.Address)
但对我来说,很难改进这个VBDim addresses=From u In _用户,u.Name=“scott”Select u.Address
。。。我意识到我的第二个例子并不“流利”(按书上的说法),但我认为它可读性强,非常简洁,并且允许链接,这是“流利”的主要优点AFAIK@EamonNerbonne,@MarkJ我写的代码在VB中是有效的,但只在VB10中有效。然而,我忽略了更简洁的单行语法;相应地更新了我的答案。关于VB.NET LINQ和C#LINQ,整个“函数(w)”绝对是我鄙视的一件事。另一件事是LINQ语句的行连续字符。谢谢你的多行提示。我看起来像个傻瓜
Dim addresses = users _
.Where(Function(u) u.Name = "scott") _
.Select(Function(u) u.Address)