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

时间:2009-09-01 00:01:19

标签: c# .net .net-3.5 .net-2.0

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

为什么要切换到3.5?

20 个答案:

答案 0 :(得分:54)

一个字:

<强> LINQ的

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

foreach (obj in myCollection)
{
   if (obj.property == match)
   {
      foundObj = obj;
      break;
   }
}

myCollection.Single(obj => obj.property == match);

编辑:或

var foundobj = 
(from obj in myCollection
where obj.property == match)
.Single()

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

对于咆哮很抱歉,但我确实喜欢Linq。

答案 1 :(得分: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运行时 - 它们只是添加了新的框架/库和一些编译器技巧。已经错过了的运行时错误修复程序。

答案 2 :(得分:8)

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

  

Mono API今天就在某个地方   在.NET 2.0和.NET 3.5之间看到我们的   关于什么是详细的路线图   实现。

取自here

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

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

答案 3 :(得分: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-Facing应用程序的缩小版WPF。与Flash相似。
  • Windows Communication Foundation - 使用更强大的基础架构取代传统的远程处理和Web服务部分
  • 用于Web开发 - ASP.NET MVC框架 - 最佳!!!!

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

答案 4 :(得分:7)

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

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

所以如果你对2.0完全满意,并且从未说过“我希望我能...... xyz”,我建议你留在原地。

答案 5 :(得分:7)

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

.NET 3.5也包含在Windows 7中。

问题是 - 为什么不呢?

答案 6 :(得分:3)

我会为lambdas升级!

SaveButton.Click += new EventHandler((sender, e) => this.Save());

答案 7 :(得分:2)

如果您不需要使用任何3.5功能,那么不用担心,它只是新增的框架库,CLR和CLI没有改变,因此您编写的所有内容,无论是使用版本2.0,3.0或3.5中的框架库最终都是相同的IL代码。知道了这一点,如果在将来的某个时候你决定要为你的应用程序添加一些3.5功能,那么你就可以知道没有任何迁移的痛苦(从1.1升级到2.0)就像所有你一样'我真的在告诉Visual Studio“允许你为项目添加3.0 / 3.5 dll”。当然,您必须确保您的用户安装了.net 3.0 / 3.5。

答案 8 :(得分:2)

我认识各种感觉就像在家,使用C,8086组装,APL,穿孔卡和前拨动开关(不是开玩笑)。他们给出了与你相同的理由。

你会建议程序员编写C#2.0吗?如果是这样,也许你应该尝试C#3.5出于同样的原因。如果没有,继续享受C#2.0,并且知道人们很快就会看到你,就像我们今天看到的汇编程序员一样。 : - )

C#3.5在让你构建比C#2.0更高级别的抽象方面要好得多,就像C#2.0比C和C更好,而不是C语言。毕竟,这不是我们首先在HLL中编程的原因吗?

答案 9 :(得分:2)

现在似乎每个应用都需要与其他应用进行通信。所以,

  • WCF

过去编写了一个TCP通信库,如果我能够通过在WCF中度过一天来节省这些月份,我会非常激动,喜出望外,欣喜若狂,并且非常高兴。

答案 10 :(得分:1)

我最常用的功能是:

  • LINQ
  • 扩展方法
  • 自动属性

如果您还没有使用LINQ,并且尝试了它,我认为您会发现它(可以)是一个非常强大的工具。

答案 11 :(得分:1)

说实话,阅读大多数回复的原因主要是语言增强。但是如果你不需要那样的话,我会因为你说的原因而坚持使用2.0。广泛的可访问性,并避免我们在这里遇到的平台兼容性噩梦......

答案 12 :(得分:1)

请求真的不应该“说服我的用户/客户从.NET 2.0迁移到3.5”

您没有说明您是为客户/用户编写代码还是仅仅作为业余爱好。如果是后者则是,那就是说服你。

否则,我无法看到您的客户对您在代码中使用Linq感到非常兴奋,除非它能让您比以前更快更可靠地完成任务。

当然,如果您是一位经验丰富的2.0开发人员,即使没有lambdas,查询语法等,您很可能已经非常高效。当然,他们会提供一些改进,但可能不足以激发您的客户。

现在,如果您的客户来找您说,我希望我的新桌面应用程序有一个像其中一个具有花哨动画等的网页的GUI,那么这很明显。您应该认真考虑使用适用于Windows Presentation Foundation等的.NET 3.0 / 3.5。

总而言之,如果有一个真实而切实的理由使用新技术,那就去做吧,否则在没有直接利益的情况下加快使用新平台/环境的速度往往很高。

答案 13 :(得分:1)

如果您正在创建或使用Web服务,那么您应该知道Microsoft现在认为ASMX Web服务是“遗留技术”。所有新的Web服务开发都应该使用WCF完成 - 这在.NET 3.0之前是不可用的,并且在.NET 3.5中变得非常成熟和稳定。

答案 14 :(得分:1)

如果您要为受众群体创建桌面应用程序,我会说服您转向3.5,这会让您觉得升级很麻烦(例如,在慢速带宽连接上使用Vista之前的用户)。毕竟客户是第一位的。

正如其他几个人所提到的,即使您定位2.0(例如对象初始化程序,自动属性),您也可以使用C#编译器的许多新功能,请查看this out以获取详细信息。此外,您也可以使用LINQ on 2.0,使用LinqBridge库,它非常小,可以随您的应用程序一起分发(这是Linq to Objects,而不是Linq to SQL)

答案 15 :(得分:1)

你愿意落后多远? .NET 4即将推出。云(通过Azure甚至Live Mesh)计算是下一波浪潮,因此您可能希望通过了解WCF为网络连接做好准备。

如果您不想学习新内容,那么您仍然可以使用2.0创建一些优秀的桌面应用程序。但作为开发人员的一部分是了解接下来会发生什么。即使您不选择针对框架的更高版本,您至少应该花一些时间来学习一些LINQ,WPF和WCF,以便您了解它们的强大功能。然后,当您需要仅在更高版本的框架中提供的内容时,您将知道为什么要使用它,并且应该能够证明框架下载到您的客户端。

答案 16 :(得分:0)

如果您经常在Asp.Net中使用转发器,那么ListView控件可以更加清晰,更易于使用asp.net 3.5提供的替代方案。

我还经常使用MVC中的路由模块,对于小型网站而言,它比网址重写要好得多。

答案 17 :(得分:0)

阅读此博客http://weblogs.asp.net/scottgu/archive/2007/11/19/visual-studio-2008-and-net-3-5-released.aspx

从这里你可以更好地了解.Net 3.5和VS 2008。

为什么更高版本即将推出,更高版本易于开发并具有高性能:)

答案 18 :(得分:0)

目前我使用3.5作为我的主要项目,并且有很多优点。 LINQ,实体框架,WPF(特别是用于数据绑定),LINQ,扩展方法,自动属性,LINQ,哦和Lambda表达式(那些很棒)!我提到过LINQ吗?

话虽这么说,我仍然将.NET 2.0用于没有太多代码或任何花哨的小型项目,例如文件转换实用程序或托盘中的一些小工具,仅用于几项任务。

我总是使用最低的框架版本,只要它满足我的所有要求。所以,如果它只是一个小工具,我可能会选择2.0,如果我想要一个漂亮的UI,我使用3.0,如果有很多数据库的东西要做,我使用3.5 SP1与实体框架。

答案 19 :(得分:0)

由于.NET 3.51客户端配置文件,其运行时大小与.net 2.0相当!