说服我转到.net 3.5(从2.0开始)

Dan*_*dor 28 .net c# .net-3.5 .net-2.0

我正在进入新的桌面应用程序开发.我觉得在家里使用.NET 2.0和c#.我想我不需要linq,也不关心WPF和其他Vista-oid花哨的关键字.我也喜欢相当紧凑和纤薄的2.0可再发行版,更多的是因为它包含了Vista和7.

为什么要切换到3.5?

Spe*_*nce 54

一个词:

LINQ

使用Linq对对象进行单一查询后,您将永远不会回头.Linq不仅仅是数据库,你可以拥有任何类型的集合,如果你能在功能上表达自己,你可以改变

foreach (obj in myCollection)
{
   if (obj.property == match)
   {
      foundObj = obj;
      break;
   }
}
Run Code Online (Sandbox Code Playgroud)

myCollection.Single(obj => obj.property == match);
Run Code Online (Sandbox Code Playgroud)

编辑:或

var foundobj = 
(from obj in myCollection
where obj.property == match)
.Single()
Run Code Online (Sandbox Code Playgroud)

哪一个更有意义?当你想要表达更复杂的查询时,比如说那个和那个,以及那个选择与其他属性相匹配的查询.你可以在两个函数调用中完成它.

抱歉咆哮,但我真的很喜欢Linq.

  • 第一个对我来说更有意义> _>更容易阅读. (5认同)
  • 绝对.LINQ-to-Objects和lambda表达式可以使丑陋的代码变得优雅.LINQ也适用于XML,非常方便.很少见到老式的代表.自动属性是一种乐趣,对象和集合初始化器也是如此.var关键字(如果明智地使用)可以使代码更具可读性.我再也不想回去了. (4认同)
  • 斯宾塞,如果你喜欢那些东西,你一定要看看Ruby.找不到无关的咆哮. (3认同)
  • 这确实需要付出代价:http://ox.no/posts/linq-vs-loop-a-performance-test (3认同)
  • @Jaimal Chohan - 我检查了那个链接,因为我在我的代码中使用了Linq.我认为结论是有缺陷的.虽然Linq比Loop慢,但差异远远小于HåvardStranden所说的,并且无论如何都不显着.请参阅http://www.nichesoftware.co.nz/blog/200909/linq-vs-loop-performance进行自己的测试. (2认同)

Bev*_*van 14

假设:您正在使用Visual Studio 2005和.NET 2.0.

原因#1:Vista包含.NET 3.0作为操作系统安装的一部分; Windows 7包含.NET 3.5

原因2:有一些方法可以使用Visual Studio 2008(和VS 2010)来定位.NET 2.0,这样您就可以从这些工具的生产力"好东西"中获益而不放弃.NET 2.0,然后在您使用时转移到.NET 2+准备好了.(Visual Studio可以帮助您在编写代码时避免使用非.NET 2.0程序集.)

原因#3:扩展方法,特别是静态类Enumerable.从技术上讲,它是Linq的一部分,但是以干净,清晰,可维护的方式编写代码的好方法.

原因#4:修复了.NET 2.0框架的错误.请记住,.NET 3.0和.NET 3.5仍然使用相同的.NET 2.0运行时 - 它们只是添加了新的框架/库和一些编译器技巧.已经有吨的 bug修复运行时它你就错过了.


Dan*_*ark 8

不使用3.5的一个原因是Mono.

今天的Mono API介于.NET 2.0和.NET 3.5之间,请参阅我们的路线图,了解有关实现的内容的详细信息.

取自这里.

另一个原因是Winforms几乎没有前进,所以你可能要等到4.在跳跃之前出现什么.

我的理解是,像LINQ这样的东西可以和.Net 2.0一起使用,因为它只是一个库.


Ant*_*lin 8

从.NET 2.0迁移到.NET 3.5甚至不应该考虑.以下是一些原因.

  • .NET 3.5完全向后兼容.NET 2.0,因为它构建在同一个核心上.3.0和3.5仅仅是2.0的扩展.
  • LINQ - 即使不使用数据库,您也可以使用Linq.它改变了一切.仅此功能非常值得一提.
  • Lambda表达式 - 集合中强大的搜索功能.与LINQ相关.
  • 匿名方法 - 创建mthods而不完全定义它们.
  • 匿名类型
  • Windows Workflow Foundation - 创建工作流程.
  • Windows Presentation Foundation - 替换旧版Windows窗体 - 但仍可以与现有的WinForms一起使用.
  • Silverlight - 用于面向Web的应用程序的缩小版WPF.与Flash相似.
  • Windows Communication Foundation - 用更强大的基础架构取代传统的远程处理和Web服务
  • 对于Web开发 - ASP.NET MVC框架 - 最好!!!!

如果没有.NET 3.5,你会错过很多东西.认真.跳跃.你会很高兴的.


Kir*_*rst 7

如果你不需要LINQ,不想要WPF(或WCF),并且不喜欢泛型的扩展使用,简单的答案是:不要这样做!

但是,一旦你只使用了3.5的上述功能之一,你会想知道你是如何做到的.转向3.5的真正原因是为了获得这些功能的好处.

因此,如果你对2.0完全满意,并且从未说过"我希望我能...... xyz",我建议你留在原地.

  • .NET 2/3/3.5全部使用相同的.NET 2.0运行时.3.0和3.5中的更改是新库和编译器技巧的组合,仅此而已.运行时开销基于应用程序的作用 - 程序集在使用之前不会加载到内存中. (3认同)

Ben*_*all 7

C#3.0有一些非常好的功能,例如自动属性和集合初始化程序 - 两者都真正清理你的代码.Linq在处理集合时也很棒,Lambda表达式也很酷.

.NET 7也包含在Windows 7中.

问题是 - 为什么不呢?