在每个程序员应该知道的.NET Framework 4中的东西
我最近搬到了Visual Studio 2010,并将我的网站升级到.NET Framework 4.(来自VS 2008 – Framework 3.5)
为了提高站点速度,可读性或内存使用量,我需要了解哪些内容?
-
并行for循环
Parallel.For(0,10,(i)=> { // Do stuff in parallel. });
Parallel类的其余部分提供了一些其他很棒的东西,例如Parallel.Invoke(...)
和Parallel.ForEach(...)
。
此外,如果您对Linq执行任何操作,则可以使用ParallelEnumerable.AsParallel()方法将Linq查询转换为并行运行。
它都build立在任务并行库上 ,它提供了一套完善的API,以一种抽象的方式处理任务,可以扩展机器的任何资源,而不必过多地考虑到你创build多less个线程。
除了GetDirectories
和GetFiles
方法之外, DirectoryInfo
类现在还有惰性版本EnumerateDirectories
和EnumerateFiles
,它们可以避免我们拥有庞大的数组来保存所有的对象。
string.Join()
现在有一个带IEnumerable<T>
的签名,而不仅仅是string[]
– 这是一个小的改进,它允许你翻出你的.Select()
和.ToArray()
代码。
令人敬畏的事情,客户端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 $或其他…
我只是喜欢web.config文件是小而有意义的事实,而不是长期和充满未知的陈述…
可选参数是我的最爱之一。 dynamic
types似乎是有希望的
C#如何实现event
字段是新的。 它不再在内部做一个非常糟糕的lock (this)
默认情况下。 事件仍然是线程安全的,但是因为现在使用了Interlocked.CompareExchange(...)
机制。
这导致了一些可能在一些边缘情况下打破的变化。 更多信息:
- Chris Burrows的博客:事件在C#4中得到了一些改进,第一部分:locking
- Chris Burrows的博客:事件在C#4中进行了一些修改,第二部分:语义变化和+ = / – =
- 频道9:旋风14:C#4中的新变化 – 事件
Enum.TryParse
Guid.TryParse
System.Numerics.BigInteger – 表示一个任意大的有符号整数。
System.Numerics.Complex – 表示一个复数。
代码合同看起来非常有希望,从创build更加正确的代码的angular度来看,也是从生成更完整的文档的angular度来看。 可悲的是,他们并不是所有的VS2010中 – 你必须安装一个附加组件,即使这样既不完整也没有完成,似乎仍然是一个正在进行的工作。
您可以使用内存映射文件(与原生Windows函数访问内存映射文件的方式相同)编辑非常大的文件并为进程间通信创build共享内存。 有关详细的解释,请参阅: http : //msdn.microsoft.com/en-us/library/dd997372.aspx
对于ASP.NET程序员来说,ASP.NET 4和Visual Studio 2010 Web开发概述白皮书全面概述了ASP.NET 4中的新function。对于一系列关于最显着和有趣的更改的文章,我推荐Scott Gutherie的VS 2010和.NET 4系列博文 。
ASP.netcaching现在在它自己的程序集!
System.runtime.caching.dll
这意味着您可以在其他应用程序(如WPF和WinForms)中使用,而无需引入整个system.web程序集
我只是希望他们能够加强CacheItem以包含有关caching项目的内置信息,例如何时添加…何时会过期,等等
我还会参考原始文档(本例中为MSDN),以获取全面的改进和补充列表:
http://msdn.microsoft.com/en-us/library/ms171868.aspx
从这篇文章中,您可以轻松find可以改进现有代码库的东西。
为了便于阅读,我将在自己的问题中加上自己的发现。
使用AJAX时,您可以指定ScriptManager的EnableCdn属性以从CDN(例如Microsoft CDN)加载值,
我相信也有WCF的增强,消除了以前的烦恼,如不能为每个端点在.Net 3.5中configurationWebGet
/ WebInvoke
不同。 我相信它在4.0中是完全可configuration的。
- 使用多个MemoryCache实例
- 用于.NET 4.0的Svcutil.exe?
- 已检测到ASP.NET设置不适用于集成pipe理pipe道模式
- 为什么我要“汇编”* .dll“必须是强签名才能被标记为先决条件。
- 混合模式程序集是针对版本“v1.1.4322”构build的
- log4net不起作用
- 尝试方法'System.Web.Helpers.Json..cctor()'来访问方法'System.Web.Helpers.Json.CreateSerializer()'失败
- 为什么我的.NET 4应用程序知道.NET 4没有安装
- ComboBox – SelectionChanged事件具有旧值,而不是新值