.NET Framework 4中的每个程序员都应该知道的事情

时间:2010-04-22 11:38:54

标签: .net-4.0

我最近搬到Visual Studio 2010并升级了我的网站以使用.NET Framework 4.(来自VS 2008 - Framework 3.5)

为了提高网站速度,可读性或内存使用,我需要了解哪些事项?

16 个答案:

答案 0 :(得分:66)

Parallel课程的其余部分提供了其他一些很棒的内容,例如Parallel.Invoke(...)Parallel.ForEach(...)

此外,如果您对Linq执行任何操作,则可以使用ParallelEnumerable.AsParallel() Method 将Linq查询转换为并行运行。

这一切都建立在Task Parallel Library之上,它提供了一套很好的API,用于以抽象的方式处理任务,可以扩展您的机器所拥有的任何资源,而无需过多考虑您创建的线程数量

答案 1 :(得分:21)

除了DirectoryInfoGetDirectories方法之外,GetFiles类现在还有懒惰版本EnumerateDirectoriesEnumerateFiles,这样我们就无法拥有大型数组一次抓住所有物品。

答案 2 :(得分:18)

string.Join()现在有一个签名,只需IEnumerable<T>而非string[] - 这是一项小改进,可让您删除.Select().ToArray()代码

答案 3 :(得分:15)

很棒的是,可以操纵客户端ID:

http://weblogs.asp.net/scottgu/archive/2010/03/30/cleaner-html-markup-with-asp-net-4-web-forms-client-ids-vs-2010-and-net-4-0-series.aspx

不再有CTL0001 $ _DIV0003_TextBox1001 $或其他......

答案 4 :(得分:13)

我只是喜欢web.config文件小而有意义,而不是冗长且充满未知语句的事实......

答案 5 :(得分:12)

可选参数是我的最爱之一。 dynamic类似乎很有希望

答案 6 :(得分:9)

C#实现event字段的方式是新的。默认情况下,它不再在内部执行非常糟糕的lock (this)。事件仍然是线程安全的,但是因为现在使用了Interlocked.CompareExchange(...)机制。

这导致一些可能在某些边缘情况下破裂的变化。更多信息:

答案 7 :(得分:9)

答案 8 :(得分:5)

System.Numerics.BigInteger - 表示任意大的有符号整数。

System.Numerics.Complex - 代表一个复数。

答案 9 :(得分:4)

从创建更正确的代码的角度以及从生成更完整的文档的角度来看,代码合同看起来非常有前途。可悲的是,它们并不是VS2010中的全部 - 你必须安装一个附加组件,即使它既不完整也不完整,似乎仍在进行中。

答案 10 :(得分:4)

您可以使用内存映射文件(与本机Windows函数访问内存映射文件的方式相同)来编辑非常大的文件并为进程间通信创建共享内存。 有关详细说明,请参阅: http://msdn.microsoft.com/en-us/library/dd997372.aspx

答案 11 :(得分:3)

对于ASP.NET程序员the ASP.NET 4 and Visual Studio 2010 Web Development Overview,白皮书全面概述了ASP.NET 4中的新功能。有关最突出和最有趣的更改的一系列文章,我建议使用Scott Gutherie {{3 }}

答案 12 :(得分:3)

ASP.net缓存现在是自己的程序集!

<强> System.runtime.caching.dll

这意味着您可以在WPF和WinForms等其他应用程序中使用,而无需拉入整个system.web程序集

我只是希望他们能够加强CacheItem以包含有关缓存项的内置信息,例如添加时...等待它何时到期等等

答案 13 :(得分:2)

我还会参考原始文档(在本例中为MSDN),以获得完整的改进和补充列表:

http://msdn.microsoft.com/en-us/library/ms171868.aspx

通过该文章,您可以轻松找到可以改善现有代码库的内容。

答案 14 :(得分:1)

为了便于阅读,我将在我自己的问题中添加我的发现。

使用AJAX时,您可以为scriptManager指定EnableCdn属性以从CDN(例如Microsoft CDN)加载值

答案 15 :(得分:0)

我相信WCF还有一些增强功能可以消除之前的烦恼,例如无法为.Net 3.5中的每个端点配置WebGet / WebInvoke。我相信它在4.0中完全可配置。