C# 7.0 新功能

[原文发表地址]: What’s New in C# 7.0 [原文发表时间]: August 24, 2016   下面是对C#7.0版本所有语言功能的描述。随着Visual Studio “15” preview 4 的发布,大部分功能可以被更灵活的应用。现在正是时候将这些功能介绍给大家,你也可以借此让我们知道你的想法。 C#7.0增加了很多新的功能,更专注于数据的消费,代码的简化及代码的性能。或许最大的功能就是元组和模式匹配,它可以快速获得多个返回结果,而模式匹配,它可以根据数据的“形”的不同来简化代码。我们希望将它们结合起来,从而使你的代码更加简洁高效,也可以使你更加快乐并富有成效。您可以点击Visual studio 窗口顶部的“send feedback”按钮来告诉我们是否有哪些功能没有达到预期的功效,也可以告诉我们您对功能进一步改善的一些看法。还有许多功能没有在Preview 4 中实现。我们计划在最终版本发布下面所描述的功能,如果我们不能及时发布这些功能,会在notes上通知大家的。如果这些功能有变化,我们也会通知大家的。最终可能会有一些功能的改变和删除。 如果你对这些功能的设计过程感兴趣,你可以在Roslyn GitHub site上查看我们的设计笔记和讨论。 希望你对C#7.0有一个愉快的体验。   输出变量: 在当前的C#版本,使用out参数可能不像我们想的那样方便。在你调用一个带有out参数的方法之前,你必须首先声明一个变量并传递给它。你通常不会初始化这些变量(毕竟它们会被方法重写),也不能用var去声明他们,而是必须指定数据的完整类型。 在C#7.0版本中,我们添加了out变量,可以在给一个函数传入参数的时候再去定义变量的能力。 变量的作用域是一个封闭的块,因此后续的代码行也可以使用它们。大多数类型的语句都没有它们自己的作用域,因此被声明的out参数通常被引入到封闭的范围内。 注:在Preview 4中,适用范围规则有了更多的限制:out参数的作用域是声明它的语句。因此,上面那个例子只有在下一次发布的时候才能真正使用。 因为out变量会直接被当做out参数来声明,这样编译器通常会告诉他们应该是的类型(除非它们被重载),所以我们可以用VAR来定义,而不必使用真正的类型。 Out参数的一种常见用法是Try…模式, 其中一个布尔返回值表示成功,out参数会携带所获得的结果: 注:这里的i仅仅在if分支中会用到,所以Preview 4可以很好的处理这种情况。 我们还可以使用通配作为out参数,用*的形式来处理,这样你就可以不必关注你不想关注的返回值了。 注:我们还不确定在C# 7.0是否可以使用通配符。   模式匹配 C# 7.0引入了模式的概念,抽象的讲,模式是语法元素,能用来测试一个数据是否具有某种“形”,并且在它被使用的时候从中提取信息。 C# 7.0中的模式示例: C形式的常量模式(C是C#中的常量表达式),我们可以验证输入是否等于C TX形式的类型模式(T是一种类型,X 是一个标识符)。 Var x形式的Var模式 (x是一个标识符)。 这仅仅是一个开始,模式是C#中的一个新语言元素,我们希望未来在C#中会有更多类型的模式。…

0

.NET Framework 4.6.2 发布公告

[原文发表地址]: Announcing .NET Framework 4.6.2 [原文发表时间]: August 2, 2016   今天,我们很高兴地宣布.NET Framework 4.6.2 发布了!许多更改都是基于您的反馈意见,其中包括一些在用户反馈 和反馈联系中心 提交的意见和建议。非常感谢您的不断的帮助和参与 !   这次的发布在以下几个方面有着巨大的改进和提升: 基础库类 公共语言运行库 ClickOnce ASP.NET SQL Windows Presentation Foundation Windows Communication Foundation 在.NET Framework 4.6.2 的更改列表和 应用程序接口变化集中,你可以查看到所有更改的东西。   立即下载 现在,你可以通过以下途径来下载.NET Framework 4.6.2: .NET Framework 4.6.2 Web 安装程序–最快捷的安装方式,需要连接互联网。 .NET Framework 4.6.2 脱机安装程序—包括所有的安装程序(包括所有的语言包),不需要连接互联网。 .NET Framework 4.6.2 开发包—针对于开发和建立环境(包括脱机安装程序和 4.6.2 定向包),不需要连接互联网。…

0

Visual Studio ‘15’ Preview 3 里 C# 和Visual Basic的新功能

[原文发表地址]: Visual Studio ‘15’ Preview 3 for C# and Visual Basic [原文发表时间]: July  13, 2016   我们在Visual Studio ‘15′的主要专注点之一就是提高开发人员在编辑代码上的效率。当我们在开发的时候重复执行了一系列的行为,诸如写方法、重命名一个变量、改变方法的签名、接口的实现等等。我们的目标是只通过点击鼠标就能实现自动化或减少这些任务以致于你可以集中于逻辑上而并非是语法、引用、代码风格和格式问题。你可能已经注意到每一个Visual Studio ‘15′版本都增强了现有的体验来为你节省更多的时间和精力,通过附加的重构和代码生成来使build速度更快。 下载Visual Studio ’15’ Preview 3,为了获取更多有关这个版本的信息请阅读版本说明 。 同样也请检查Visual Studio “15” Preview 3 博客文章。   C#7 在 Visual Studio 中 ’15’ 中,C# 语言本身的效率有了很大提升, C# 7现在的默认功能如下: 元组允许传递一组值。当我们想要一个没有使用out参数的方法中返回多个值时,这就非常方便了。C# 7 元组可以用作字典中的键。例如:很容易组合多个值成单一的键(注:C#7编译器生成高效的Equals和GetHashCode方法并且是值类型,C#7元组比System.Tuplede 内存效率更高,从而减少内存分配) 模式匹配可以让你声明测试类型和值的内容,同时提取数据到变量。这形成更多的测试表达类型和switch语句。 局部函数,ref 返回,二进制文件等等。 下面的例子演示了多个C#7的功能:模式匹配,元组,局部函数和二进制文件。 与我们在GitHub上或者@roslyn 来分享你的反馈,我们很乐意倾听您的想法!  …

0

.Net Core 1.0 公告

[原文发表地址]: Announcing .NET Core 1.0 [原文发表时间]: June 27, 2016   我们无比兴奋地想告诉大家,发布的.NET Core1.0, ASP.NET Core 1.0和Entity Framework Core 1.0在Windows、OS X和Linux系统上可用了。.NET Core是一个跨平台,开源代码,模块化的.NET平台,可以用来创建现代网络应用,微服务,库和控制台应用程序。 这次的发布包括.NET核心运行时、库和工具以及ASP.NET核心库。我们也发布了可以让你创建.NET Core项目的Visual Studio和Visual Studio Code扩展。你可以参照https://dot.net/core里的信息来开始,同时可以阅读发布摘要来获取详细发布信息。 Visual Studio团队今天也发布了Visual Studio 2015 Update 3 。你需要这个发布才能去创建 Visual Studio里的 .NET Core apps。 我们今天正在在docs.microsoft.com上发布.NET documentation。这是微软的一个新的文件服务。这个你所看到的文件仅仅是一个开始。你可以通过 GitHub在core-docs上跟进我们的过程。ASP.NET Core documentation同样是可用并且开源的。 今天我们在Red Hat DevNation会议上展示了 我们的发布版产品以及我们与Red Hat的合作关系。在Channel 9里的现场直播视频里,Scott Hanselman将演示.NET Core 1.0。.NET Core现在在Red Hat Enterprise Linux和OpenShift上是可用的。另外,.NET…

0

移植到.NET Core,整合各平台更简单

[原文发表地址]:  Making it easier to port to .NET Core [原文发表时间]: May 27, 2016   在我的上一篇文章中,我谈到了关于移植到.Net Core, 并且也恳请大家能给我们一些关于他们的经历和我们有待提高的方面的一些反馈。 这点燃了我们用户的交流热情。 基于这些讨论以及我们与第一和第三方伙伴合作的经验,我们已经决定要通过统一与其它.NET平台的核心API来简化移植工作,尤其是对于.NET框架和Mono/Xamarin之间。 在这篇博客,我将会谈到我们的计划,包括怎样开始以及何时会开始这项工作,以及这些对已有的.NET核心用户的意义。   回顾.NET Core .NET Core平台从希望建立一个现代化、模块化、本地应用程序和跨平台的.NET stack进化而来。促使该业务目标产生的动力在于为全新的应用程序类型(例如 触控式UWP应用程序)或现代的跨平台应用程序(例如ASP.NET core web站点和服务)提供一个整合的stack。 我们即将发布.NET Core 1.0,同时我们已经成功开发了一个功能强大的和跨平台开发stack。.NET Core 1.0开创了把.Net 推行到所有平台的先河。 虽然.NET Core在我们所制定的情境中运行良好,但它只提供了相对于其他.NET平台较少的技术,尤其是相对于.NET Framework来说。其一是因为不是所有东西都是以跨平台做为目标来开发的,其二是我们把一些我们认为不必要功能给删除了。 我们也清楚如果要学习并使用.NET Core,这需要.NET开发人员去花费大量的时间来进行移植。 为用户提供一个全新的API肯定是不错的,但是这种作法彷彿变相的惩罚了长年以来一直使用微软 API 与技术的忠实客户,他们已经使用了我们之前的API和相关技术很多年了,也投入了很多。我们想要扩展我们的.NET平台并推广给更多的开发者,但是我们绝不能以放弃现有的用户为代价的。 Xamarin在这方面做了很好的榜样。他们允许.NET开发人员花费最小的精力来开发IOS和Android平台的移动应用程序。让我们来看看 iOS,iOS 其实跟 UWP 有许多的相似之处,例如对终端使用者经验的高度重视和对静态编译的要求。Xamarin 跟 .NET Core 不同的地方在于, Xamarin 并没有重新构想 .NET…

0

Tuple Tuesday!

[原文发表地址]: Tuple Tuesday! [原文发表时间]: May 31, 2016 在不久的将来,我们试图将元组作为一项核心功能加入到VB和C#中。如果你还没有听说元组,那可以将它理解为是一种把多种值组合在一起的基础数据结构。像.NET里面的 F#, 有许多编程语言已支持它多年,然而在 Visual Basic中不支持确实有些奇怪了。元组就像数组一样,它是一个捆绑了多个值作为一个单元,而除了数组中每个元素具有相同的类型,在元组中每个元素可以有不同的类型。所以,如果我发现在我的程序中,我总是需要同时传两个值,那么我就可以把它们组合成一个元组: 不使用元组的情况…   使用元组的情况… 在上面的例子中,我们可以用包含2个整型的元组作为方法的参数,而不是在方法之间单独传递两个整型参数。这样能使我们更加清楚的知道这些值被作为一个单元来处理。在本例中我 使用了存在于.NET 4.0及以上版本里的通用元组类型System.Tuple (of T1,T2)。你今天也可以这样使用,只是有两个缺点。第一,系统。Tuple(of T1,T2) 以及和它关联的类型都是类,因此每次你创建一个Tuple(of T1,T2)类型,它都会在堆上分配的一个新的对象。在VB和C#中,我们正在考虑使用一套新的值类型的元组类型,如ValueType(Of T1, T2)分配内联地址,这样更方便于使用元组。第二,在收到大量关于元组名称有多重要的客户的反馈后,内置VB(和C#)元组将具有名称: 这意味着你将拥有所有声明自己结构但带有轻量语法的自文档化名称。这有点类似于VB里的匿名类型,同时可以在方法外传值。这使得VB元组具有了像F#语言中元组和记录的所有特点。我们觉得这简直太完美了。 尽管简洁,但仅仅一起传递多个数据并不会太有吸引力,对于元组最耀眼的部分是返回多个值。如果没有元组你需要写这样一种方法,将两个数相除并返回商和余数: 因为VB函数总是精确的返回一个值,如果你想要返回额外的值就需要在调用方法中传递ByRef变量。或者,你自己可以在你的代码中声明QuotientAndRemainder结构,但老实说又有谁想要在自己的项目中,为了一个返回值,创建一个名字有些滑稽的方法类型呢?如果有了元组,你就不必进行这些权衡: 作为一种语言,它的目标是可读的和易理解的,我认为这是迄今为止最简单和最直接的方式去从一个函数返回多个值。我们认为元组的使用,极大的方便了在工程里传递和返回多个值。当使用强大的异步功能时,这个优势更加突出,因为在异步函数中你甚至不能有ByRef参数。今天你将需要声明一个特殊的结构,或使用数组(如果所有的值都具有相同的类型),或者使用元组类型却丢掉有意义的名称。使用元组,你可以拥有所有的方便之处。 此方法通过网络从数据库中提取一些数据,所以它应该是异步的并且遍历所有的订单来计算有用的统计信息,如所有订单的总值,平均订单数和订单的数量。如果没有元组你将不得不在你的项目中添加一个非常讨厌的TotalAverageAndCount类型。 目前,关于在Visual Basic中元组的完整设计策略,可以通过阅读design notes on GitHub来了解,包括用一些其他方式将元组集成到其它语言中。请在GitHub中留下关于Tuple功能设计上的反馈或者在下面进行评论。 上周,我绞尽脑汁地想提出一个好的双关语来介绍元组,导致这篇文章会比原计划晚了一周。“Tuple Tuesday”算是一个较好的选择吧。为了避免混淆,VB语言设计团队为正在添加的那些功能积极集思广益出了许多双关语。我认为下一个设计主题将是“Visual Basic and Patterns – A Match Made In Heaven!” (我认为这将给VB添加一个全新的维度)-敬请期待。在此之前,依旧快乐编程吧! Regards, -ADG

0

.NET本机编译器和运行时在Visual Studio 2015 Update 2的新功能

[原文发表地址]: What’s new for the .NET Native Compiler and Runtime in Visual Studio 2015 Update 2 [原文发表时间]: April 18, 2016   上周我们发布了一个Windows通用应用程序(UWA)的Visual Studio2015工具的更新包,其中包括对整个库、运行环境和编译器的优化。这意味着开发将更快速,应用程序将更快响应和更易维护。应用程序如NCAA March Madness Live和Tuneln电台已经通过我们的新.NET工具在应用商店上线了。   获取Windows平台通用工具 针对Windows通用应用程序的最新版Visual Studio2015工具包,作为Visual Studio 2015 Update 2的一部分已于近期发布了。通过直接安装Visual Studio 2015 Update2或者选择修改已经安装的更新来安装这个更新包。当弹出您要安装的功能列表时,确认已经选择了通用Windows应用程序开发工具下的工具(1.3.1)和Windows10 SDK(10.0.10586)。一旦Windows通用应用程序Visual Studio2015工具包安装后,现有的项目在重新编译后,将使用最新的编译器和运行环境。   更改Visual Studio 2015 Update2 修改Visual Studio 2015 Update 2,并安装最新的UWA工具包时,可以按照以下步骤: 通过控制面板\程序\程序和功能,打开Visual Studio2015的安装程序。 选择修改。 确保位于通用Windows程序开发工具部分的工具(1.3.1)和Windows 10 SDK(10.0.10586)已经被选中。…

0

Build 2016开发者大会上的.Net 信息—开源、跨平台和免费

[原文发表地址]: .NET at Build 2016 – Open, Cross-platform and FREE [原文发表时间]: April 1, 2016   哇!你能否想象下你的开发环境会变的多么完美呢? 它现在就是了。 今天,在Build 2016开发者大会上,我们的公告确实震惊了好多人。如果你正在观看,你就会知道Scott Guthrie在舞台上有带劲了。公告的范围从设备到云,也包括了很多开源信息和免费版本。对于.NET开发人员来说,现在是一个很好的机会去通过你已有的技能来研究各种.Net 技术。如果你不是一个.NET开发人员,是时候再考虑下.NET了!.NET体系里包括了工具、API和为各类开发人员提供的服务,以方便开发者创建各类应用程序。 Xamarin公告: 现在Xamarin是Visual Studio的一部分,包含在免费的Visual Studio社区版。你可以构建iOS,安卓和UWP应用程序,并且上传到任何应用商店。 跟Visual Studio社区版一样,Xamarin Studio社区版也是免费的。 Xamarin SDK(包括运行时,库和命令行工具)将会在接下来的几个月里开放源代码。 Mono重新认证为MIT并且作为.NET Foundation的一部分,就像.NET内核。 Red Hat公告: Red Hat宣布推出一个免费的Red Hat企业版Linux开发人员订阅。 Red Hat为.NET开发人员启动了一个新站点:redhatloves.net。 .NET Foundation公告: 该.NET基础已经成立一个技术指导组来确保公司正式的参与进来并影响.NET的发展方向。 Red Hat,Unity和JetBrains正在加入.NET Foundation的技术指导小组。   这条推文几乎涵盖了它。   我们的Xamarin 关于Xamarin怎样集成到Visual Studio和微软,我们已经听过很多预测和猜测。事实是它比任何人猜测的都要好。现在Xamarin是Visual Studio的一个关键部分,它的集成也没有任何额外的费用。它甚至集成在免费的社区版里。不会再有比这更好的理由去下载Visual Studio并开始开发您的下一个应用程序了。 对于那些刚加入的人,Xamarin是一个可以使用C# 或…

0

.NET 框架兼容性简介

[原文发表地址]: Introduction to .NET Framework Compatibility [原文发表时间]: May 2, 2016   前言 从.NET框架4.0开始,所有主版本号为4(称为“4.x”版本)的.NET框架,都会进行就地更新。这就意味着在一段时间内,电脑上安装的只有一个.NET 4.x框架。安装.NET 4.5框架将替换.NET 4.0框架,.NET 4.5.1框架将替换.NET 4.5框架,.NET 4.6框架将替换.NET 4.5.1,以此类推。 由于这些就地更新的特点,原本在.NET 4.0框架上运行的应用程序,在电脑安装的.NET框架升级后,可能需要在.NET 4.6上运行。.NET 4.x框架之间的兼容性是非常高的,因此在.NET 4.x框架下正常工作的应用程序,通常也会在较新版本的.NET框架下正常运行。然而不同的.NET 4.x框架会有一些变化,因此应用程序应该在其将运行的任何版本的.NET框架上测试下。 本文概述了最佳做法和工具,用来使支持新的.NET 版本更容易。   发生了哪些变化?为什么? 对于.NET 团队来说,和之前版本的.NET框架的兼容性,是一个高优先级的工作。事实上,.NET框架所有的更改都是由经验丰富的工程师进行审核,他们会对这些改变在客户的应用程序上的影响进行评估。 尽管如此,仍然存在兼容性问题。原因之一是,在更新.NET框架时,兼容性并不是唯一的优先事项。有时,由于功能性的原因,不得不进行更改,来解决某个安全漏洞,或者是支持某个行业标准。 还有一些偶然发生的兼容性问题。.NET框架团队会进行全面的兼容性测试,以防止这些问题,但仍然会漏掉一些问题。还有更复杂的情况,修复兼容性问题本身就是一种影响兼容性的改变(因为有些用户可能依赖于这些无意的新行为)。在这样的情况下(解决无意的行为更改),.NET框架团队常常会使用一个称为“quirking”的解决方案。   Quirking和目标.Net框架 Quirking指的是对于缓解兼容性问题,在.NET 框架中有两个单独的代码路径,并且选择一种作为应用程序的目标.NET 框架版本的路径。这种方式缓解了许多.NET 框架兼容性的问题,因为应用程序在较新的.NET框架上运行时,只要在没有变化的目标.NET框架中运行,就避免了很多潜在的问题。Quirking行为是被应用程序的目标.NET框架自动确定,但可以由开发人员使用应用程序或计算机配置设置来进行重写。虽然通过奇想行为减轻了很多兼容性的问题,但是由于安全方面的考虑,以及技术上的限制,并不是所有的兼容性问题都可以被Quirking行为解决。 举一个例子,如果一个目标.NET框架是4.5的应用程序,在安装了.NET 4.5.2的电脑上运行,即使在较新的框架上执行应用程序,为了减少兼容性问题,它也会模拟.NET 4.5的行为。 目前, 微软对.NET 4.0,4.5 和 4.5.1已 停止支持,但是需要特别注意的是,根据新.NET框架的支持政策, 以那些低版本为目标.NET框架的应用程序在高版本的.NET框架上的正常运行,将会继续得到支持。 目标版本是在创建应用程序域 (通常是在托管可执行文件启动时)时,由应用程序的主程序集的目标框架属性决定的。此属性可以通过以下方式设置︰ 可以在 Visual Studio…

0

Visual Studio中C#和VB的新功能

[原文发表地址] What’s New for C# and VB in Visual Studio [原文发表时间] April 2, 2016   在这周的Build 2016开发者大会里,我们发布了Visual Studio 2015 Update 2 以及Visual Studio “15” Preview。今天,你可以在发布的两个版本中体验很多新的语言功能。你可以在一台机器上安全的安装以上两个版本的Visual Studio。这样你就可以体验所有的新的功能。 Download Visual Studio Update 2 Download Visual Studio “15” Preview   Visual Studio 2015 Update 2 中 C# 和 VB 的新功能 在Visual Studio 2015 Update 2 中,对比以前你会注意到,我们已经增加了一些新增强的功能以及一些重构。团队把重点放在开发人员生产效率上,通过缩减时间、鼠标点击次数、以及按键次数来使你每天的工作更高效。 交互式改进(目前只针对于Update 2中的C#,…

0