powershell visualstudio2017破解 2017 多少钱

&>&&>&开发技术&>&其它&>&SAPIEN PowerShell Studio .141 x64 破解版 分卷二
SAPIEN PowerShell Studio .141 x64 破解版 分卷二
上传大小:60MB
本工具工有三个分卷,当前为第二分卷,请完整下载三个分卷后解压。
综合评分:0(0位用户评分)
所需积分:
下载次数:3
审核通过送C币
创建者:qq_
PDF 文档书籍
创建者:qq_
ReactiveX Programming
创建者:w_z_z_1991
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var q = $("#form1").serializeArray();
console.log(q);
var res_area_r = $.trim($(".res_area_r").val());
if (res_area_r == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
var mess = $(".res_area_r").val();
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, _username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click",'.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
$(".res_area_r").val($.trim($(".res_area").val()));
评论共有0条
上传者其他资源上传者专辑
Telerik UI for Silverlight
SAPIEN PowerShell Studio .141 x64 破解版 分卷三
SAPIEN PowerShell Studio .141 x64 破解版 分卷一
Folder Lock 7.7.0 多语言破解版
IDM UEStudio 17.10.0.15 x64 破解版
开发技术热门标签
VIP会员动态
前端开发重难点
17年软考最新真题及解析
物联网全栈开发专题
二十大技术领域优质资源
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
CSDN&vip年卡&4000万程序员的必选
SAPIEN PowerShell Studio .141 x64 破解版 分卷二
会员到期时间:剩余下载次数:
积分不足!
资源所需积分
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分
当前拥有积分
VIP年卡全年1200次免积分下载
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可奖励20下载分
被举报人:
sygwin_net
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:CodePlex is shutting down.
Read about the shutdown plan, including archive and migration information, on
Are you Sure?
StudioShell's goal is to fundamentally change the way you interact with Visual Studio and your code.
If you&ve ever implemented a Visual Studio extension, such as an add-in or a package, you know how convoluted this space has become. You have to become an expert in your tooling if you want to change it. StudioShell changes this landscape by exposing
many of Visual Studio&s extensibility points in a simple and consistent way. It makes the Visual Studio IDE interactive and discoverable.
What an add-in does in a compiled binary, StudioShell can accomplish with a one-liner.
Current Release
The current release of this project is&. This release has been classified as &stable& and is recommended for use over previous releases.
The StudioShell DTE provider is now available as a . This package provides access to the DTE:/ drive from the package manager console without the overhead of installing the entire StudioShell environment.
Special thanks to Avi Haiat for helping get the 2013 support off the ground.
Getting Involved
There are several ways you can get involved in this project:
Contribute your scripts to the
project. Use StudioShell and log any issues using the . If you are interested in expanding support for the SSMS object model in StudioShell, please
If you are interested in expanding the DTE provider with additional features of the Visual Studio service offering, please
The features supported by StudioShell include:
Support for standard PowerShell profile scripts, as well as StudioShell profile scripts - customize your StudioShell session as you would any other PowerShell session.
Manage your projects, references, breakpoints, stack frame locals, menus, toolbars, Visual Studio settings, IDE windows, and even your code from PowerShell scripts, all in a consistent and discoverable way.
Solution Modules - save your StudioShell and IDE customizations as a PowerShell module in your solution, and it will automatically be imported into your StudioShell session when the solution is loaded.
Simple visualization controls you can invoke from the console - create a graph of project code statistics with one line of script.
Fully integrated context-sensitive help. Host indifference - StudioShell features can be used from any suitable PowerShell host, including
NuGet, the standard PowerShell console, and the
Integrated Scripting Environment.
For more specific features and examples, please see
A deeply integrated Mercurial file status monitor with two lines of PowerShell:
to view the video.
Exploring the DTE provider:
to view the video.
Last edited
by , version 15
Most Helpful Reviews
&&&&&Unfortunately doesn't work in VS 2015. Otherwise it would be great.
&&&&&Epic. Brilliant. Magnificent.

Nuff said :).
related projectsVisual Studio 2017 新功能汇总 - 知乎专栏
{"debug":false,"apiRoot":"","paySDK":"/api/js","wechatConfigAPI":"/api/wechat/jssdkconfig","name":"production","instance":"column","tokens":{"X-XSRF-TOKEN":null,"X-UDID":null,"Authorization":"oauth c3cef7c66aa9e6a1e3160e20"}}
{"database":{"Post":{"":{"title":"Visual Studio 2017 新功能汇总","author":"Fdyo2015","content":"微软已经正式宣布了 Visual Studio 2017,以下是 VS 2017 新功能的重点摘录。(你也可以阅读官方原文,地址:)使用 Visual Studio 2017 开发适用于 Android、iOS、Windows、Web 和云的应用。 快速编码、轻松调试和诊断、时常测试,并且可以放心地进行发布。 还可通过构建自己的扩展,以便扩展和自定义 Visual Studio。 此新版本发布之后,可使用版本控制、更具敏捷性且可高效协作!Visual Studio 2017 的改进主要针对:开发、调试、测试、协作、扩展、增强工具等方面,另外 Visual Studio 2017 也改变了以往 VS 的安装方式。1.开发:快速导航、编写并修复代码 - 降低了最小内存需求量以实现更快、更定制化的安装,并且支持脱机安装。 - 大幅改进了 Visual Studio 2017,包括减少启动和解决方案加载时间、改进登录和标识、改进代码导航以及增添打开文件视图和链接的服务,实现了应用和任意本地服务或云端服务之间的连接。
- 版本 2015 和 2017 之间没有重大更改。 更佳的 C++14 一致性级别、CMake 支持、生成吞吐量和编辑器效率。
- 扩展对新的 C# 7.0 和 Visual Basic 15 语言功能的支持,引入新的重构以便能够通过一个操作来整理源代码。 - 支持 F# 4.1 语言功能、对 F# 编译器和 FSharp.Core 的改进,以及基于 Roslyn 工作区的新编辑器。 – TypeScript 2.1 可用于 Visual Studio 中的所有 TypeScript 项目。 提供新的 JavaScript 语言服务,并默认启用。2.调试:轻松调试、探查和诊断 - 对异常帮助器进行了大改造,且可以通过“运行时单击”更快地导航代码。 此外,“诊断工具”窗口中增添了应用程序事件摘要,并对 CPU 工具实施了多项改进。3.测试:使用全面的测试工具编写高质量代码 - 在编辑器中实现单元测试结果和代码覆盖率的实时可视化。 - 使用测试资源管理器将自动化与测试用例工作项关联。4.协作:使用版本控制、具备敏捷性且高效协作 - 在 Visual Studio 2017 中可使用 Git 完成更多工作,并可轻松找到要连接到的项目和存储库。5.扩展:构建自己的扩展,根据自身喜好进行自定义 - 通过构建自己的扩展来按照自身喜好对 Visual Studio 进行自定义。 - 突破性地改进了 Visual Studio 使用项目和项模板的方式,提升了模板发现的性能。6.增强的工具 - 这包含新的基于 MSBuild 的 .NET Core 工具的 1.0 最终版本。 使用 Visual Studio 2017 可创建 .NET Standard 库、.NET Core 应用/库和使用新 csproj 格式的 ASP.NET web 项目。 - 更新包括新版本的 .NET Native 工具链、.NET Core NuGet 框架、新的效率工具以及对 Windows 10“创意者更新”SDK 的支持。 - Xamarin 4.3 添加了对 tvOS 的支持,同时改进了 iOS 资产目录支持和 XML 编辑体验。 - 基于浏览器的新模拟器可实现快速编码并即时查看结果。 - 更新侧重于稳定性、性能和总体产品质量。 - 现可通过新的 Visual Studio 安装程序中的“使用 Unity 的游戏开发”工作负载安装 Visual Studio Tools for Unity 3。 - 为了将 DevOps 功能扩展到 SQL 数据库开发,Visual Studio 现在包含 Redgate 开发人员工具 Core Edition,其中包括 Redgate ReadyRoll、SQL 搜索和 SQL Prompt。 - NuGet 现在支持将包依赖项信息作为直接存储在项目文件中,同时保持包引用的可传递优势。
- 现在可以通过 XAML 运行时工具栏跟踪焦点。 通过 XAML“编辑并继续”功能、XAML 编辑器改进和性能优化,提升了 XAML 的工作效率。 - SQL Server Data Tools 的最新更新实现了对 Azure SQL 数据库和 SQL Server 2016 的最新功能的支持。 - Visual Studio 2017 包括开发人员分析工具 v8.6,对 Visual Studio 中的 Application Insights 和 HockeyApp 功能做出了许多改进。 - 包含了附带最新功能和更新的 Office 开发人员工具。 - 依赖关系验证关系图(又称层关系图)的实时通知。7.其他 - 重构了脚本以支持新的安装体验。 - 现可通过新的 Visual Studio 安装程序获取。 - 报告问题协作性更佳。 搜索、跟进和投票,获取所有反馈的最新更新。安装体验微软推出了新款全新设计的安装程序:减少 Visual Studio 的最小内存占用量。安装速度更快、系统影响更小和完全卸载。方便你更轻松地选择并仅安装所需功能。首次安装 Visual Studio 2017 时,会获得新体验:最小的安装仅为数百兆字节,但仍然支持针对超过&20; 种语言的基本代码编辑(包括源代码管理)。 大部分用户会想安装更多功能。 可添加一个或多个代表常见框架、语言和平台的“工作负载”,涵盖从 .NET 桌面开发到使用 Unity 的游戏开发等一切事务。创建用于脱机安装和新命令行安装支持的布局系统管理员和其他用户现在可以创建 Visual Studio 的脱机布局,其中包含了安装产品所需的所有内容,无需访问 Internet。 此布局可以是完整的产品、工作负荷和/或组件的一个子集,以及一个或多个产品区域设置。 请注意,创建脱机布局需要 Internet 访问。 有关详细信息,请参阅 (创建 Visual Studio 2017 的脱机安装)。 安装别名Visual Studio Enterprise 和 Community(以及其他产品)现在可以并行安装在同一台计算机上。 若要使标识这些安装更加容易,可以指定短名称或“别名”。 例如,如果要安装 Visual Studio Enterprise,然后安装 Visual Studio Community,这两个程序在开始菜单上的显示是一样的。 可以为第二个程序提供别名,如“community”,开始菜单项中将显示诸如“Visual Studio 2017 (community)”和“Visual Studio 2017 (community) 开发人员命令提示”这样的名称。
Visual Studio IDEIDE 改进已对 Visual Studio 进行优化以减少启动时间和解决方案加载时间。 首次启动 Visual Studio 提速 50%。Visual Studio 现可监视影响启动、解决方案加载或编辑的扩展性能。 通过 IDE 中的通知栏,将收到有关执行效果不佳的扩展的警报。 借助新的性能中心(也可通过“帮助”&“管理 Visual Studio 性能”使用),可查看影响性能的扩展,还可发现影响启动性能的工具窗口并更改其启动加载行为。可在新的 Visual Studio 安装程序中选择 Visual Studio 适用的 GitHub 扩展。已将“重载所有项目”替换为“重载解决方案”,以在切换 VS 外部分支时获得更佳性能。 使用 Git 命令行切换分支时,请在切换分支后选择“重载解决方案”以最大程度地提升性能。增强了用于 .NET Core 和
Core 项目的文件通配功能。 请参阅,以获取更多详细信息。即将自动转到克隆后的存储库的文件夹视图。 可查看文件或使用新解决方案选择列表在解决方案资源管理器中打开解决方案。引入了新的外部服务主机,它将替代 VSHub。 此新的服务主机是一个外部进程,将在任务管理器中显示为 ServiceHub.Host.CLR.*.exe 和 ServiceHub.Host.Node.x86.exe。 此主机将最终消除与 VSHub 一起引入的 localhost http 流量,前者应可解决用户报告的产生干扰的 Fiddler 问题。预发布许可证到期消息更明确地说明了当前的许可证状态。现在,屏幕阅读器可以更轻松地访问“帐户设置”对话框。现在,通过从 Visual Studio 安装程序中安装帮助查看器组件,可使用脱机帮助。 现在可以使用 Visual Studio 安装程序的“语言包”选项卡随时添加和删除多个用户界面语言。 可以使用“工具”&“选项”&“国际设置”,在那些已安装的用户界面语言之间选择当前的用户界面语言。 通过版本控制状态栏,你可以更轻松地将本地存储库发布到 SCC 主机,并跟踪未提交和未推送的工作。登录和标识改进推出了一种新的标识服务,可用于跨 Microsoft 开发人员工具共享用户帐户。 在 Visual Studio 中,此共享包括团队资源管理器、Azure Tools 和 Windows 应用商店发布等功能。 现在,这些功能的登录体验共有且一致。除了改进 Visual Studio,我们还在服务端部署了部分改进功能,让用户可安全保持登录状态,消除了每 12 小时便强制登录的要求。 这解决了最常报告的登录问题。 。起始页拥有新的“打开”和“创建”功能:从 VSTS 获取远程存储库或使用我们更加醒目的 MRU,以轻松地打开本地项目和解决方案。起始页 MRU 会显示在其他计算机上克隆的存储库,因此可在当前计算机上轻松克隆这些库。通过可搜索的模板和最近使用的模板列表,直接从起始页新建项目。 最近使用的模板也会在具有个性化帐户的 Visual Studio 实例间漫游。通过起始页上的“从 VSTS 签出”选项,快速启动 VSTS 体验的新克隆。可删除的“入门”部分。“新闻”部分现可折叠:更新了新闻源中新添加的项上的徽章。在新闻源处于折叠状态时,如果出现新项,则对新闻源扩展器设置徽章。优化了视觉设计,由此解决了反馈的有关屏幕较小时元素截断的问题,同时提升了空间利用率。下方显示了新的起始页。改进了代码导航Visual Studio 2017 中的代码导航功能有了显著改进:转到全部。 (Ctrl + , 或 Ctrl + T)可快速查找并转到代码中的文件、类型、方法和其他元素。 通过它可找到任何类型的项,甚至在大型基本代码中亦可如此。 此外,若知道要查找的项类型,便可轻松进行筛选。 在 C# 和 Visual Basic 中,我们还添加了模糊匹配,因此即使某个类型名称拼写错误,也仍然可获得结果。 还优化了“转到行”(Ctrl + G)体验。 “转到”系列命令位于“编辑”菜单的顶部。
“查找所有引用”(Shift+F12) 已大幅改进(当前针对 C#、Visual Basic 和 C++),可实现高级分组、筛选、分类、在引用结果中搜索以及结果着色(针对 C# 和 VB),让用户清晰了解引用并自信地找到所需的代码行。 鼠标悬停在引用项上时,会显示一个工具提示,其中显示源代码中该引用的上下文(针对 C# 和 VB)。 通过切换工具栏中的“保存结果”按钮,“查找所有引用”的下一个调用将在新窗口中填充引用结果。 通过此操作,可将当前结果保留在现有窗口中。结构参考线现在编辑器中绘制,以便可轻松可视化正在处理的代码的结构。 鼠标悬停时,会显示一个工具提示,其中包含当前代码块(相对于其上级块)的上下文。 结构参考线当前支持 C#、Visual Basic 和 XAML 文件,以及通过 TextMate 语法支持的任何文件。 可通过取消选中“文本编辑器” & “常规”类别下的“显示结构参考线”复选框,在“工具”&“选项”对话框中禁用此功能。通过 .editorconfig 支持编码约定Visual Studio 编辑器现支持 ,它允许开发人员定义编码样式约定并使其在不同编辑器和 IDE 之间保持一致。 请参阅获取更多详细信息,请参阅 获取有关如何使用 .editorconfig 文件管理 .NET 代码样式的信息。 请参阅,了解此版本中有关 EditorConfig 支持的限制。打开文件夹“打开文件夹”是使用不含项目和解决方案的基本代码的简便方法。 通过“文件”&“打开”&“文件夹”打开文件夹视图,然后选择要导航的文件夹。可使用解决方案资源管理器打开和编辑文件。 许多常用语言具有语法突出显示和符号导航(GoTo)支持。 此外,某些语言可直接由文件夹获得高级 IntelliSense 和调试支持:C++ (CMake)。Node.js - JavaScript/TypeScript。C# 和 VB。可使用 F5 和解决方案资源管理器中的文件上下文菜单实现生成或调试操作。 要获得最佳体验,请确保安装所使用语言的工作负荷。文件夹视图也支持以下操作:使用 GoTo (Ctrl+,) 在文件夹中的代码中进行搜索。将解决方案资源管理器文件夹视图的范围设置为子文件夹。在资源管理器中或解决方案资源管理器的命令提示符下打开文件夹。利用解决方案选择下拉列表,在打开的文件夹/存储库的解决方案之间轻松切换。使用 launch.vs.json 配置调试和启动设置。 右键单击可调试的文件并选择“调试和启动设置”。使用 tasks.vs.json 配置任务和自定义生成。 右键单击任何文件,并选择“配置任务设置”。Launch.vs.json 和 tasks.vs.json 在 JSON 编辑器中具有 IntelliSense。大幅提升了打开文件夹和在文件夹视图与解决方案视图之间切换时的效果。轻量级解决方案加载轻量级解决方案加载可让大型解决方案的加载速度更快。 它可大幅节省大型解决方案的加载时间和内存使用量。 此功能并非默认启用,可按解决方案逐一启用,也可在 IDE 中全局启用。 若要全局启用,可导航到“工具”&“选项”,选择“项目和解决方案”下的“常规”,或通过使用“快速启动”搜索“轻量级解决方案加载”。 可在解决方案属性窗格中,为单个解决方案开启和关闭该功能。轻量级解决方案加载最适合包含 C# 项目或包含混用 C# 和 C++ 的项目的大型解决方案。 如果检测到正在使用大型解决方案,系统可能会提示启用此功能。 有关此功能的更多详细信息,可访问 。大幅改进了完整解决方案生成的性能,现在与常规的解决方案加载拥有同等性能。语法着色、自动完成、代码段和对更多语言的“导航到”搜索支持基于在 Visual Studio 2015 更新中添加的支持,Visual Studio 2017 现支持对更多语言进行语法着色和自动完成。 此外,这些语言中的其中一些语言也支持通过“导航到”(Ctrl+) 和/或代码段导航。 以下所示的语言文件支持新“Visual Studio 核心编辑器”中的这些功能(即使并未安装显式支持有问题的语言的工作负载)。 如果安装了提供语言支持的工作负载(例如 .NET 桌面应用程序开发工作负载、使用 C++ 的 Windows 桌面应用开发工作负载等),会提供更广泛的语言支持,包括 IntelliSense 和其他高级语言功能(例如灯泡)。按支持级别列出的语言文件类型:仅支持语法着色和自动完成:Bat、Clojure、CoffeeScript、CSS、Docker、F#、Groovy、INI、Jade、Javadoc、JSON、LESS、LUA、Make、Markdown ++、Objective-C、Perl、PowerShell、Python、Rust、ShaderLab、SQL、Visual Basic .NET、YAML。支持代码段(除了语法着色和自动完成以外):CMake、C++、C#、Go、Groovy、HTML、Java、Javadoc、JavaScript、Lua、Perl、PHP、R、Ruby、Shellscript、Swift、XML。支持导航到(除了语法着色和自动完成以外):C++、C#、Go、Java、JavaScript、PHP、TypeScript、Visual Basic。项目概述页入门针对新创建的项目,我们引入了全新的入门体验。 我们已将当前的入门页替换为新应用配置设计器中的“概述”选项卡,此页面侧重于能够让你快速入门并开始运行的操作!在
Core 项目中启用。在 Cordova 项目中启用。使用连接的服务连接到服务在以前的版本中,此功能被命名为“服务功能”。 我们已将该名称更改为“连接的服务”。连接的服务即 Visual Studio 2017 中新式的“添加连接的服务”功能或“添加服务引用”功能。 连接的服务功能可使应用与服务间的连接更轻松。 解决方案资源管理器中提供了一个用于 Web 和移动项目类型的名为“连接的服务”的新节点。 双击此节点会在 Visual Studio 中打开一个新的整页选项卡,可在其中发现可连接到的热门 Microsoft 服务。在“连接的服务”页上选择一个服务将调用“连接的服务向导”,该向导会配置项目、下载必要的 NuGet 数据包,从而帮助快速轻松地根据服务需要进行编码。产品随附的工具和功能通过 Visual Studio 2017 可轻松获取其他工作负载和组件,而无需离开 IDE。 利用“快速启动”可查找并启动任何工作负荷或单个组件的 Visual Studio 安装程序。如果找不到正在寻找的模板,也可以从“新建项目”对话框中打开 Visual Studio 安装程序。另外,Visual Studio Enterprise 2017 也已经在正式开卖,可以充值一波宇宙第一 IDE,传送门:","updated":"T19:31:08.000Z","canComment":false,"commentPermission":"anyone","commentCount":41,"collapsedCount":0,"likeCount":302,"state":"published","isLiked":false,"slug":"","isTitleImageFullScreen":false,"rating":"none","titleImage":"/v2-e9e0b77a6d901f808e695_r.jpg","links":{"comments":"/api/posts//comments"},"reviewers":[],"topics":[{"url":"/topic/","id":"","name":"Microsoft Visual Studio"},{"url":"/topic/","id":"","name":"IDE (Innovation Design Engineering)"}],"adminClosedComment":false,"titleImageSize":{"width":499,"height":300},"href":"/api/posts/","excerptTitle":"","column":{"slug":"MSFaith","name":"微软信仰中心"},"tipjarState":"inactivated","annotationAction":[],"sourceUrl":"","pageCommentsCount":41,"hasPublishingDraft":false,"snapshotUrl":"","publishedTime":"T03:31:08+08:00","url":"/p/","lastestLikers":[{"bio":"研发工程师","isFollowing":false,"hash":"fcba0d532b009dade0b20","uid":52,"isOrg":false,"slug":"long-gang-62-42","isFollowed":false,"description":"","name":"隆刚","profileUrl":"/people/long-gang-62-42","avatar":{"id":"335f661c417aa87311ccf","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false},{"bio":"学的专业就是给你们家小区装基站。","isFollowing":false,"hash":"feca44cd46b58c9c161477","uid":12,"isOrg":false,"slug":"kosaka_nightingale","isFollowed":false,"description":"こうさか るり/Kosaka Ruri/JK制服/lolita洋装/cosplay/人像摄影/通信/C++/NB-IoT/公共交通/轨道交通/城市规划","name":"高坂琉璃","profileUrl":"/people/kosaka_nightingale","avatar":{"id":"b8e8f5ec31f2e7a676e114","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false},{"bio":null,"isFollowing":false,"hash":"ce2c206bfca2fc16b211b455db0fade5","uid":68,"isOrg":false,"slug":"SteringYan","isFollowed":false,"description":"","name":"Stering","profileUrl":"/people/SteringYan","avatar":{"id":"884fd2247","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false},{"bio":"未来的世界该是什么样子。。","isFollowing":false,"hash":"00fed853b8698977eaa7d700b57e7b6c","uid":050200,"isOrg":false,"slug":"wu-di-44-75","isFollowed":false,"description":"实习生","name":"毋迪","profileUrl":"/people/wu-di-44-75","avatar":{"id":"b0f45da8ba462ebcdb082699","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false},{"bio":null,"isFollowing":false,"hash":"cc2f59b9ccb354eafbb9d0","uid":52,"isOrg":false,"slug":"simon001","isFollowed":false,"description":"","name":"哪热闹往哪扎","profileUrl":"/people/simon001","avatar":{"id":"327db47c29ea0ec511d63172befc123a","template":"/{id}_{size}.png"},"isOrgWhiteList":false}],"summary":"微软已经正式宣布了 Visual Studio 2017,以下是 VS 2017 新功能的重点摘录。(你也可以阅读官方原文,地址:)使用 Visual Studio 2017 开发适用于 Android、iOS、Windows、Web 和云的应用。 快速编码、轻松调试和诊断、时常测…","reviewingCommentsCount":0,"meta":{"previous":{"isTitleImageFullScreen":false,"rating":"none","titleImage":"/v2-cbbb83922aa0_r.jpg","links":{"comments":"/api/posts//comments"},"topics":[{"url":"/topic/","id":"","name":"微软(Microsoft)"},{"url":"/topic/","id":"","name":"Lumia(微软手机品牌)"},{"url":"/topic/","id":"","name":"Windows Phone"}],"adminClosedComment":false,"href":"/api/posts/","excerptTitle":"","author":{"bio":"echo \"127.0.0.\">>/etc/hosts","isFollowing":false,"hash":"2f7c649bbacecbe827dbcc5","uid":92,"isOrg":false,"slug":"LiTuX","isFollowed":false,"description":"对自以为是的人没有好感的有点自以为是的人\nPS: 偶尔上来竟然可以送各路大V的奇异答案一双反对&&没有帮助的感觉好奇妙哦大V们。是的我送出的没有帮助比赞同多,怎么?不服来咬我呀。","name":"LiTuX","profileUrl":"/people/LiTuX","avatar":{"id":"f07b06eb268d2f79e077","template":"/{id}_{size}.png"},"isOrgWhiteList":false},"content":"现在是2017年3月,理论上来说,距离微软的春季新品发布会也不太远了,那个让无数 WP-er 翘首期盼的传说中的 Surface Phone 到底存在不存在,也到了快要揭晓的时刻。然而,作为曾经的 WP-er,我在经历了自己的第一部智能手机 Lumia 925 用了一年之后坏掉、并没有看到足够吸引人的新 WP 手机,于是转战 Android 阵营(准确说是安卓阵营)一年多,然后被 ADUI 硬生生气得半死等一系列事件之后,终于下定决心,重新投入 WP 的怀抱,尽管目前市场上在售的 Windows Phone 我都不太满意。那到底选谁呢?这个问题在购入 925 和 925 死掉准备换机的时候都困扰了我好久。我理想中的 Windows Phone 应该:具有 Nokia Lumia 纯种血统的外观;支持概览屏幕(Glance Screen);支持悦幕(ClearBlack Display);有不亚于 925 的夜间成像效果;能够升至 Windows 10 Mobile;最好支持无线充电(否则我的 DT-910 就废了);其他加分项比如待机时间、运存与内部存储等,当然是希望可以稍好一些。于是没了 Nokia 标志的 X40+,已经被以“长得丑”为由,排除在了此次换机的目标之外;而 930 尽管长得漂亮,可惜不支持概览屏幕,只能忍痛再一次放弃它……尽管没能全部满足要求,最终还是敲定了目标:迄今为止最为漂亮的 Lumia 手机之一,小奥利奥 Lumia 830。于是在前不久某宝搞来一台港版骚绿色,正式回归 WP。以下便是一个老 WP-er 多年以后回归 WP 的所见、所闻、所感。===========================================废话不多说,拿到之后立马更新固件升级 Windows 10 Mobile,毕竟 WP 8 已经被彻底放弃,软件数量也太少。对于在微软支持列表中的设备,升级的过程还是比较傻瓜的,在应用商店中安装,跟着指导进行下去,等下载完成后进行更新,重启几次之后就升级到了 Windows 10 Mobile。升级后会保留之前的软件。为了更彻底的体验 W10M,我在升级之后进行了几次重置,重置之后会进入到一个相对干净的 W10M 环境下,但是 WP8 中的软件不会被保留。每次重置之后,系统中有些许差别,不确定是重置不干净还是升级不彻底造成的。在这里我遇到了微软留下的很大的几个坑:WP8 时代的升级有 Nokia 参与,直接通过固件与系统绑定的方式同时升级,因而大部分情况下,经过充分测试的升级对手机的功能不会有多大影响(即使有,后续升级也能进行修正)。而龟软将 Nokia 坑死之后,在 W10M 时代将固件与系统分离,这个做法是没错,但你不应该动不动就把系统功能给砍掉吧!以下是升级 W10M 并重置之后出现问题的功能不完全列表(欢迎跌入坑底的坑友们补充):概览屏幕:系统升级后,在应用商店更新中能够看到概览屏幕的更新。在 W10M 的设置-&个性化中,有个系统级别的概览屏幕设置(功能很少),单独的概览屏幕安装之后,理应出现在设置-&附加程序中,但这里面的概览屏幕升级前后都不能使用。升级至最新之后,打开可见设置项,但无法操作,并会在 5s 左右自行退出。我已经将其删除。实际可用的概览屏幕设置项比较简单,所以没有 WP 时那么丰富。来电与短信拦截:同上,系统升级后也能看到更新的提示。更新之后会提示功能被骚扰拦截替代,该设置项被砍。由于是港版,系统里面的骚扰拦截是国际版,据说效果很差,并且没有归属地功能,此项存疑,我还没有进行验证。Lumia 运动数据:W10M 中没有该设置项,需要自己到应用商店中安装,安装后设置项功能正常(需要重启),然而由于微软已经将 MSN 健康 应用下架,正在寻找合适的替代品以充分利用 Lumia 的功能,比如 Fitbit 等。欢迎小伙伴们进行推荐。轻触:W10M 中没有该设置项,需要自己到应用商店寻找,但并不能通过搜索的方式找到它。某些应用中能够提供指向它们的链接,或者如果运气好,可能在“我的资料库”中能够找到它。安装后使用正常。颜色配置文件:需要自行安装,安装后使用正常。Nokia 账户:别开玩笑了,Nokia 都没了还什么 Nokia 账户。无法联机,已删除。MSN 健康、美食、旅游:全部下架。其中健康如果不进行更新,还可以通过 Lumia 运动数据进行计步等。如果没有更新强迫症,并且能够忍受该应用长期处于联网连不上的状态,可以保留进行计步,另外两个应用都不能联网。三个应用均已被我删除。Lumia 专业拍摄:更新之前尚可使用,一旦更新,只提示已被 Windows 自带的相机应用取代,无法进行其他操作。我已将其删除。类似的,众多 Nokia 应用、以及许多微软自家的应用,&del&由于用户觉得用起来还挺好&/del&,已经被微软砍掉,包括:Lumia 投影仪、Lumia Highlights,Here 全系列及城市万花筒,热门应用圈,MSN 体育、财经,阅读列表等。以上列表,欢迎广大坑友补充。如果说上面这几个被砍掉还能够理解,接下来这个我只能用莫名其妙来形容。Nokia 手机标志性的收音机功能,在 W10M 中,系统层面已经移除。同 Lumia 运动数据类似,手持 Lumia 尽管硬件上有这些功能,但微软愣是非要把软件砍掉。你要是嫌健康需要访问网络数据而用户又少等原因砍了至少还可以理解,妈的一个人畜无害的收音机也 TM 给砍掉了我就打死也想不明白……正在寻找好用的替代品,欢迎坑友推荐。Gesture Beta:这是我在 WP 时代最喜欢的一个功能之一,尽管一直在 Beta 阶段,——这才好意思叫智能机嘛!不过按龟软的尿性至少还没有直接砍掉。嗯,WP 8 的商店里面没有直接砍掉,W10M 中直接不予支持。该应用无法安装,由于根本没看到相关设置,W10M 系统层面支持这些功能的可能性比较低,尚未测试。小工具:原来的设备管理器改名而来,但不知是系统的 Bug 还是什么,后来的几次重置之后,更多应用中完全没有小工具。现在只能通过从应用商店找到小工具才能打开,或者接入外部设备将其打开。应用商店: 提到应用商店,我遇到的一个奇怪的 Bug 是,已经安装的软件在应用商店中仍然显示“安装”,点击安装也没有用。可能还需要重置几次看看能否解决问题。Cortana:还记得 Cortana 刚出现时的惊喜,当时升级系统之后,搜索键变成呼出 Cortana,她逐渐的成长,懂得你的生活习惯,知道你的行程……贴心的安排提醒,完全对得起“智能助理”这个称号。当初我用着小众的 Lumia + 高大上的 Cortana,即使别人并没有多羡慕,还是感觉自己步入了智能时代。好嘛,微软为 iOS 跟 Android 开发 Cortana 让更多人用我们也高兴啊,可是!!你丫现在连亲儿子都不管不顾只完善另外两大平台是几个意思?!iOS 跟 Android 上小娜已经进化了多少轮了!升到 W10M 之后的小娜还跟之前差不多!就算不给我们 WP 独占的功能,起码跟他们一样也行啊!毕竟这是小娜的出生地、她的娘家啊!!……深感无力当然不止 Cortana,许多别的微软自家应用,现在也是 WP/W10M 平台的功能远远不及 Android 跟 iOS……比如翻译,比如远程桌面,比如 Skype……不过毕竟微软还是留下了独占的应用:IE/Edge,前者见于 WP 8,后者见于 W10M。IE 的坑不少那是在桌面端,在 WP 上,我用 IE 用的还是很舒服的。到 W10M 之后,换成了 Edge 我也不反对,那能不能不要动不动就把用户觉得好用的功能砍掉啊!记得 IE 可以设置夜间模式,配合 AMOLED 大晚上低亮度下完全不刺眼。可是 Edge 的网页背景经常是纯白纯白的啊!眼睛都要看瞎了!让眼睛受罪的还有一个很崩溃的问题。一个是感觉 W10M 的自动屏幕亮度不如 WP 8 的好,另外就是许多人都遇到的闪屏问题。屏幕会忽然变黑,然后再恢复。这个问题似乎从 WP 8 开始就有人反映过,现在 W10M,继续可以看到。吐槽了这么多,其实 W10M 倒也不是一无是处。至少很多 WP-er 呼唤的中文滑动输入法,在 W10M 的全键盘拼音中已经实现了。虽然 UWP 应用的概念推出之后,Windows Phone 上能用的软件在增多,但还远远不够,结果微软自己也完全不上心。作为 Insider,这么多人反馈给微软各种问题,帮他们测试,最终问题得不得到回应完全看心情……有的问题反应了好几年也不一定有动作。我一直觉得,也正是微软自身的态度,导致各大厂商不愿意开发 WP 平台的应用、普通用户不愿意使用 WP 设备……不管怎么说,这次还是信仰加成再次回归 WP,接下来的一段时间,这台 830 将成为主力机,同时寻找没有那么坑爹的 ROM 抢救以下粗粮的设备。后续可能会有进一步的玩机日志,敬请广大玩家批评指导!===========================================PS:Lumia 系列的命名很多都是以时间的形式显示在屏幕上,比如 830 显示 8:30,950 就是 9:50……所以 X50 只能而且必须是 Lumia 的最后一代了,——怎么可能有 9:60 这样的时间呢?","state":"published","sourceUrl":"","pageCommentsCount":0,"canComment":false,"snapshotUrl":"","slug":,"publishedTime":"T22:28:30+08:00","url":"/p/","title":"【信仰充值】Windows 10 Mobile 搞机日志","summary":"现在是2017年3月,理论上来说,距离微软的春季新品发布会也不太远了,那个让无数 WP-er 翘首期盼的传说中的 Surface Phone 到底存在不存在,也到了快要揭晓的时刻。然而,作为曾经的 WP-er,我在经历了自己的第一部智能手机 Lumia 925 用了一年之后坏掉、并…","reviewingCommentsCount":0,"meta":{"previous":null,"next":null},"commentPermission":"anyone","commentsCount":130,"likesCount":141},"next":{"isTitleImageFullScreen":false,"rating":"none","titleImage":"/v2-5c75a262f62f55a4dfa8a757a3e9bb5b_r.jpg","links":{"comments":"/api/posts//comments"},"topics":[{"url":"/topic/","id":"","name":"C#"},{"url":"/topic/","id":"","name":"编程语言"},{"url":"/topic/","id":"","name":"微软(Microsoft)"}],"adminClosedComment":false,"href":"/api/posts/","excerptTitle":"","author":{"bio":"程序员","isFollowing":false,"hash":"15592f9ccfbcd652cb6b9","uid":44,"isOrg":false,"slug":"yiwwan","isFollowed":false,"description":"","name":"Vicey Wang","profileUrl":"/people/yiwwan","avatar":{"id":"d4bff37e2","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false},"column":{"slug":"MSFaith","name":"微软信仰中心"},"content":"作者:译者:这是一篇描述上周四作为
的一部分所发行的 C# 7.0 中的新语言特性的文章。C# 7.0 新增了许多新功能并引入了对数据消费、代码简化和性能的关注。也许最重要的新特性是使返回多个结果更加方便的元组(tuples),和可以用来简化由数据形状而决定的代码的模式匹配(pattern matching)。但是还有许多大大小小的新功能。我们希望它们能够组合起来以使你的代码更加有效率和干净,并使你更开心,富有生产力。如果你对这些特性的设计流程感兴趣的话,你可以在
找到设计笔记、建议和大量的讨论。如果感觉这篇文章似曾相识,那可能是由于去年八月发行的一个预备版本而造成的。在 C# 7.0 的最终版本中,少部分细节被修改了,其中一些是为了响应帖子中精彩的反馈而修改的。好好享受 C# 7.0,好好享受 hacking 吧!Mads Torgersen, C# 语言团队 PMOut 变量(Out variables)在之前的 C# 版本中,使用 out 参数并不像我们期盼的那样流畅。在你能够使用 out 参数来调用一个函数之前,你首先需要声明待传入的变量。同时由于你一般不会初始化这些变量(它们毕竟会被这些方法覆写),你也无法使用 var 来声明它们,而是需要指定完整的类型:public void PrintCoordinates(Point p)\n{\n
int x, y; // 需要“预声明”\n
p.GetCoordinates(out x, out y);\n
WriteLine($\"({x}, {y})\");\n}\n在 C# 7.0 中我们添加了 out 变量;使你能够在传入一个 out 参数的地方声明一个变量:public void PrintCoordinates(Point p)\n{\n
p.GetCoordinates(out int x, out int y);\n
WriteLine($\"({x}, {y})\");\n}\n请注意,这些变量位于包含它们的代码块的作用域,因此之后的代码可以使用它们。许多种类的语句不会建立它们自己的代码块,因此在这些语句中声明的 out 变量通常被引入到(这个)封闭作用域中。由于 out 变量直接以 out 参数的形式声明,编译器通常可以分辨它们的类型应该是什么(除非有冲突的重载),所以完全可以用 var 替代类型来声明它们:p.GetCoordinates(out var x, out var y);\nOut 参数的一个常见使用场景是会返回一个指示是否成功的 Try… 模式,然后 out 参数来携带获得的结果:public void PrintStars(string s)\n{\n
if (int.TryParse(s, out var i)) { WriteLine(new string('*', i)); }\n
else { WriteLine(\"Cloudy - no stars tonight!\"); }\n} \n我们也允许以 _(下划线)形式“舍弃” out 参数,来使你忽略你不关心的参数:p.GetCoordinates(out var x, out _); // 我只关心 x\n模式匹配(Pattern matching)C# 7.0 引入了模式匹配的概念,一种从抽象的角度来说,指可以测试一个值是否有某种特定的“形状”、并在满足这一条件的时候从值中提取信息的句法元素。C# 7.0 中的模式的例子有:c(c 为 C# 中的一个常量表达式)形式的常量模式(Constant pattern),来测试输入是否等于 cT x(T 为一个类型,x 为一个标识符)形式的类型模式(Type pattern),来测试输入是否有类型 T,并在满足条件的时候将值提取成全新的 T 类型的变量 xvar x(x 为一个标识符)形式的变量匹配(Var patterns),这种匹配总是能够成功,并会将输入的值简单的放入一个全新的与输入类型相同的变量 x 中。这只是个开始——模式现在是 C# 中的一种新的语言元素了,我们也希望在未来能向 C# 中加入更多的模式。在 C# 7.0 中我们用模式改进了两个已有的语言结构:is 表达式的右边现在可以是表达式,而不仅仅是类型了switch 语句中的 case 子句现在可以匹配模式,而不仅仅是常量了在未来的 C# 版本中我们会添加更多可以使用模式的地方。具有模式的 Is 表达式这里有一个用常量模式和类型模式来使用 is 表达式的例子:public void PrintStars(object o)\n{\n
if (o is null)return;
// 常量模式 “null”\n
if (!(o is int i)) return; // 类型模式 “int i”
WriteLine(new string('*', i));\n} \n如你所见,模式变量(pattern variables)——通过模式引入的变量——和之前描述过的 out 变量很像,都可以在表达式中声明,也可以在最近的作用域中使用。和 out 变量一样,模式变量也是可以修改的。我们经常以“表达式变量”来统称 out 变量和模式变量。模式和 Try 模式通常可以被很好地组合使用:if (o is int i || (o is string s && int.TryParse(s, out i)) { /* 使用 i */ }\n具有模式的 Switch 语句我们正在使 switch 语句一般化,因此:你可以筛选任意类型(不仅仅是原生类型)模式可以被用在 case 子句中Case 子句可以有额外的限制条件这是个简单的例子:switch(shape)\n{\n
case Circle c:\n
WriteLine($\"circle with radius {c.Radius}\");\n
case Rectangle s when (s.Length == s.Height):\n
WriteLine($\"{s.Length} x {s.Height} square\");\n
case Rectangle r:\n
WriteLine($\"{r.Length} x {r.Height} rectangle\");\n
default:\n
WriteLine(\"&unknown shape&\");\n
case null:\n
throw new ArgumentNullException(nameof(shape));\n}\n关于这个新扩展的 switch 语句有一些需要注意的事项:现在 case 子句的顺序变得重要了:就如 catch 子句一样,case 子句不再一定不相交,第一个匹配的项将被选择。因此将正方形的情况(见上图例)放在矩形之前很重要。同样,编译器会帮你标出永远无法到达的分支。在此之前你无法指定计算顺序,因此这不会造成(旧代码)行为的大变化。default 子句将总是在最后被计算: 即使 null 的情况被放在最后,它仍会在 default 子句被选中之前被检查。这是为了与现存的语义兼容。然而,良好的习惯通常会将 default 子句放在最后。在最后的 null 子句不会无法到达: 这是因为类型模式(的行为)以目前的 is 表达式为例子,且不会与 null 匹配。这保证了 null 值不会意外地被类型模式抢先匹配;你需要更加明确如何处理它们(或是将它们留给 default 子句)。由 case …: 标签引入的模式变量只在当前的 switch 节有效。元组(Tuples)我们经常希望能从一个方法中返回一个以上的结果。旧版本的 C# 中的选项远远达不到令人满意的程度:Out 参数: 使用起来很笨拙(哪怕你使用了上面所述的改进),并且无法在 async 方法中使用。System.Tuple&...& 返回类型: 用起来很啰嗦,并且需要分配一个元组对象。自定义每个方法的传输类型: 需要用一大堆代码来实现一个类,而目的仅仅是临时打包几个变量。通过动态类型返回匿名类: 性能有瓶颈,且没有静态类型检查。为了在这方面做得更好,C# 7.0 加入了元组类型(tuple types)和元组字面量(tuple literals):(string, string, string) LookupName(long id) // 元组返回类型\n{\n
... // 从数据储存中取出第一个、中间和最后一个数据\n
return (first, middle, last); // 元组字面量\n}\n这种方法现在会很有效率地返回三个字符串,包装成一个元组值中的元素。方法的调用者将会收到一个元组,并可以分别访问各个元素:var names = LookupName(id);\nWriteLine($\"found {names.Item1} {names.Item3}.\");\nItem1 等是元组元素的默认名称,并且总是可用的。但是这样描述性不是非常好,因此你可以选择性地使用另一种更好的方法:(string first, string middle, string last) LookupName(long id) // 元组元素拥有了名称\n现在元组的接收者可以使用更具描述性的名字了:var names = LookupName(id);\nWriteLine($\"found {names.first} {names.last}.\");\n你也可以直接在元组字面量中指定元素名称:
return (first: first, middle: middle, last: last); // 在字面量中命名元组元素\n通常来说你可以无视名字而将元组类型互相转换:只要每个元素之间是可转换的(assignable),元组类型即可自由地互相转换。元组是值类型,它们的元素是简单的公共、可修改的字段。它们具有值相等性,意味着如果两个元组间每个元素两两相等(且拥有相同的哈希值)则两个元组相等(且拥有相同的哈希值)。这使得元组在多返回值之外的许多场景也很有用。例如,如果你需要一个拥有多个键的字典,使用一个元组作为你的键,一切都会正常运行。如果你需要一个每个位置有多个值的列表,使用元组吧,诸如搜索列表这样的功能将会正确的工作。元组依赖于一族被称为 ValueTuple&...& 的底层泛型结构类型。如果你指向了一个还未包含这些类型的框架,你可以从 Nuget 中获得它们:在解决方案管理器中右击项目并选中“管理 NuGet 程序包”选择“浏览”标签并将“nuget.org”选为“程序包源”搜索“System.ValueTuple”并安装它。解构(Deconstruction)另一个使用元组的方法是去解构它们。一个解构声明(deconstructing declaration)是一种用来将一个元组(或其他值类型)分成许多部分并将这些部分分别转换为全新的变量的语法:(string first, string middle, string last) = LookupName(id1); // 解构声明\nWriteLine($\"found {first} {last}.\");\n在一个解构声明中,你可以为独立的变量声明使用 var: (var first, var middle, var last) = LookupName(id1); // 在内部使用 var\n甚至把一个单独的 var 放在括号外作为缩写:var (first, middle, last) = LookupName(id1); // 在外部使用 var\n你也可以通过 解构分配(deconstructing assignment)将其解构到已存在的变量上:(first, middle, last) = LookupName(id2); // 解构分配\n解构不仅仅适用于元组。任何类型都可以被解构,只要它拥有一个如下形式的(实例或扩展)解构方法(deconstructor method):public void Deconstruct(out T1 x1, ..., out Tn xn) { ... }\nOut 参数构成解构的结果。(为什么它使用 out 参数而不是返回一个元组?那是因为这样一来你可以对不同的值的数量拥有不同的重载了)。class Point\n{\n
public int X { get; }\n
public int Y { get; }\n\n\n
public Point(int x, int y) { X = x; Y = y; }\n
public void Deconstruct(out int x, out int y) { x = X; y = Y; }\n}\n\n(var myX, var myY) = GetPoint(); // 调用 Deconstruct(out myX, out myY);\n它将成为一种常见的模式,通过以这种方式“对称地”拥有构造器和解构器。如同 out 变量,我们允许在解构中“舍弃”你不关心的部分:(var myX, _) = GetPoint(); // 我只关心 myX\n本地方法(Local functions)有时一个辅助函数只在某个使用到它的函数中有用。现在你可以在其他函数体内将这类函数定义为 本地函数(local function):public int Fibonacci(int x)\n{\n
if (x & 0) throw new ArgumentException(\"Less negativity please!\", nameof(x));\n
return Fib(x).current;\n\n
(int current, int previous) Fib(int i)\n
if (i == 0) return (1, 0);\n
var (p, pp) = Fib(i - 1);\n
return (p + pp, p);\n
}\n}\n作用域内的参数和本地变量都在本地方法中可用,就如同在 lambda 表达式中一样。例如,被实现为迭代器的方法通常需要一个非迭代的包装函数以在调用时检查参数。(迭代器本身在 MoveNext 被调用之前不会开始)。本地方法完美的适用于这种场景:public IEnumerable&T& Filter&T&(IEnumerable&T& source, Func&T, bool& filter)\n{\n
if (source == null) throw new ArgumentNullException(nameof(source));\n
if (filter == null) throw new ArgumentNullException(nameof(filter));\n\n
return Iterator();\n\n
IEnumerable&T& Iterator()\n
foreach (var element in source) \n
if (filter(element)) { yield return element; }\n
}\n}\n如果 Iterator 是 Filter 旁的私有函数,它可能会被其他成员意外地直接使用(而没有参数检查)。同时,它还需要接收与 Filter 相同的参数,而不是直接在作用域中使用它们。字面量改进C# 7.0 允许 _(下划线)在数字字面量中作为数字分隔符 (digit separator):var d = 123_456;\nvar x = 0xAB_CD_EF;\n你可以将它们放置在任意位置来增强可读性。它们不会影响值。同时,C# 7.0 引入了二进制字面量(binary literals),这样你可以直接指定位模板而不用将十六进制记号牢记于心。var b = 0b00_11;\n引用返回和引用本地变量(Ref returns and locals)就像你可以在 C# 中以引用方式传值(使用 ref 修饰符)一样,你现在可以以引用方式返回值,并将它们以引用的方式存在本地变量中。public ref int Find(int number, int[] numbers)\n{\n
for (int i = 0; i & numbers.Length; i++)\n
if (numbers[i] == number) \n
return ref numbers[i]; // 返回储存的位置,而不是值\n
throw new IndexOutOfRangeException($\"{nameof(number)} not found\");\n}\n\nint[] array = { 1, 15, -39, 0, 7, 14, -12 };\nref int place = ref Find(7, array); // 为 7 在数列中的位置起个别名\nplace = 9; // 在数列中以 9 替换 7\nWriteLine(array[4]); // 输出 9\n这对向很大的数据结构中传递占位符来说非常有用。例如,一个游戏可能将它的数据存在一个庞大的预先分配好的结构体数组(以避免垃圾回收的停顿)中。现在方法可以返回直接指向这种解构的引用,调用者可以借此来读或者修改数据。为了确保这样做是安全的,有一些限制:你只能返回“可以安全返回”的引用:一种是传给你的,另一种是指向对象中的字段的。引用本地变量被初始化到一个确定的储存位置,且不可被修改为指向另一个(引用变量)。更加一般化的 Async 返回类型在此之前,C# 中的 async 方法只能返回 void,Task 或是 Task&T& 中的一个。C# 7.0 允许用这样的方式定义其他的类型以使它们可以从被 async 方法所返回。例如,我们现在有一个 ValueTask&T& 结构类型。它被用来防止 async 操作的结果在仍在 await 的时候就可用的情况下的 Task&T& 对象的创建。对大多数 async 场景,例如使用到缓存,这可以大幅减少内存分配并可以获得巨大的性能提升。你可以想象得到,有许多种能使这种“类 Task”类型非常有用的方法。正确的创建它们可能不是那么直观,因此我们并不期待大多数人来造自己的轮子,但是它们将会出现在框架和 API 中,然后调用者们就可以像今天使用 Task 一样地返回并 await 它们了。更多的表达式体成员(Expression bodied members)表达式体方法,属性等是 C# 6.0 中的一大亮点,但我们并未所有成员上启用它。C# 7.0 在可以拥有表达式体的列表中添加了访问器、构造器和析构器:class Person\n{\n
private static ConcurrentDictionary&int, string& names = new ConcurrentDictionary&int, string&();\n
private int id = GetId();\n\n
public Person(string name) =& names.TryAdd(id, name); // 构造器\n
~Person() =& names.TryRemove(id, out *);
// 析构器\n
public string Name\n
get =& names[id];
// get 访问器\n
set =& names[id] = value;
// set 访问器\n
}\n}\n这是由社区贡献的特性的一个例子,而不是微软 C# 编译器团队(贡献的)。对,开源!抛出表达式(Throw expressions)在表达式中抛出异常非常简单:只要调用一个为你做这件事的方法!但是在 C# 7.0 中我们直接允许将 throw 在特定位置作为一个表达式:class Person\n{\n
public string Name { get; }\n
public Person(string name) =& Name = name ?? throw new ArgumentNullException(nameof(name));\n
public string GetFirstName()\n
var parts = Name.Split(\" \");\n
return (parts.Length & 0) ? parts[0] : throw new InvalidOperationException(\"No name!\");\n
public string GetLastName() =& throw new NotImplementedException();\n}\n(全文完)广告时间:MS暑期实习生开放申请了,欢迎登录
提交申请。需要内推的可以私信我~","state":"published","sourceUrl":"","pageCommentsCount":0,"canComment":false,"snapshotUrl":"","slug":,"publishedTime":"T00:52:49+08:00","url":"/p/","title":"【译】C# 7.0 的新特性(MS实习招聘开始啦)","summary":"作者:译者:这是一篇描述上周四作为
的一部分所发行的 C# 7.0 中的新语言特性的文章。C# 7.0 新增了许多新功能并引入了对数据消费、代码简化和性能的关注。也许最重要的新特性是使返回多个结果更加方便的元组…","reviewingCommentsCount":0,"meta":{"previous":null,"next":null},"commentPermission":"anyone","commentsCount":39,"likesCount":211}},"annotationDetail":null,"commentsCount":41,"likesCount":302,"FULLINFO":true}},"User":{"Fdyo2015":{"isFollowed":false,"name":"Fdyo","headline":"微软 MVP","avatarUrl":"/c2f68ad59ce9ce9d2c7b51_s.jpg","isFollowing":false,"type":"people","slug":"Fdyo2015","bio":"微软 MVP , Writing Python","hash":"8b7b91eae998dd0ca7e15dd","uid":239360,"isOrg":false,"description":"微软 MVP","profileUrl":"/people/Fdyo2015","avatar":{"id":"c2f68ad59ce9ce9d2c7b51","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false,"badge":{"identity":null,"bestAnswerer":null}}},"Comment":{},"favlists":{}},"me":{},"global":{},"columns":{"MSFaith":{"following":false,"canManage":false,"href":"/api/columns/MSFaith","name":"微软信仰中心","creator":{"slug":"Fdyo2015"},"url":"/MSFaith","slug":"MSFaith","avatar":{"id":"a8d1a5c8f3e67b01d2d5cd95","template":"/{id}_{size}.jpeg"}}},"columnPosts":{},"columnSettings":{"colomnAuthor":[],"uploadAvatarDetails":"","contributeRequests":[],"contributeRequestsTotalCount":0,"inviteAuthor":""},"postComments":{},"postReviewComments":{"comments":[],"newComments":[],"hasMore":true},"favlistsByUser":{},"favlistRelations":{},"promotions":{},"switches":{"couldAddVideo":false},"draft":{"titleImage":"","titleImageSize":{},"isTitleImageFullScreen":false,"canTitleImageFullScreen":false,"title":"","titleImageUploading":false,"error":"","content":"","draftLoading":false,"globalLoading":false,"pendingVideo":{"resource":null,"error":null}},"drafts":{"draftsList":[],"next":{}},"config":{"userNotBindPhoneTipString":{}},"recommendPosts":{"articleRecommendations":[],"columnRecommendations":[]},"env":{"isAppView":false,"appViewConfig":{"content_padding_top":128,"content_padding_bottom":56,"content_padding_left":16,"content_padding_right":16,"title_font_size":22,"body_font_size":16,"is_dark_theme":false,"can_auto_load_image":true,"app_info":"OS=iOS"},"isApp":false},"sys":{}}

我要回帖

更多关于 visio studio 2017 的文章

 

随机推荐