walterlv的专栏

热爱设计,不止是程序,更是艺术!

排序:
默认
按更新时间
按访问量

.NET/C# 使用 Span<T> 为字符串处理提升性能

.NET Core 2.1 和 C# 7.2 带来了 Span 的原生支持,原本需要使用不安全代码操作的内存块现在可以使用安全的方式来完成。此前在性能和稳定性上需要有所取舍,而现在可以兼得了。 简单的例子 先来看一个字符串处理时使用 Span&amp;lt;T&am...

2018-07-27 07:26:32

阅读数:75

评论数:0

.NET/C# 使窗口永不获得焦点

有些窗口天生就是为了辅助其它程序而使用的,典型的如“输入法窗口”。这些窗口不希望抢夺其它窗口的焦点。 有 Win32 方法来解决这样的问题,WS_EX_NOACTIVATE 便是关键。 具体来说,是给窗口样式中额外添加一个 WS_EX_NOACTIVATE 位。 var handle...

2018-07-27 07:25:01

阅读数:56

评论数:0

(2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序

每次使用 Visual Studio 的模板创建一个 UWP 程序,我们会在项目中发现大量的项目文件、配置、应用启动流程代码和界面代码。然而这些文件在 UWP 程序中到底是如何工作起来的? 我从零开始创建了一个 UWP 程序,用于探索这些文件的用途,了解 UWP 程序的启动流程。 本文分为...

2018-07-27 07:19:11

阅读数:66

评论数:0

(1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序

每次使用 Visual Studio 的模板创建一个 UWP 程序,我们会在项目中发现大量的项目文件、配置、应用启动流程代码和界面代码。然而这些文件在 UWP 程序中到底是如何工作起来的? 我从零开始创建了一个 UWP 程序,用于探索这些文件的用途,了解 UWP 程序的启动流程。 本文分为...

2018-07-27 07:17:16

阅读数:88

评论数:0

理解 Roslyn 中的红绿树(Red-Green Trees)

Roslyn 的 API 是非常易用的。即便如此复杂的 C# 语法,建立的复杂的 C# 语法树,还有其复杂的树遍历和修改过程,也都被其 API 包装得干净简洁。 而这背后是它的重要设计思路 —— 红绿树。 红绿树的影子 如果你是通过搜索找到这篇文章的,那么至少证明你调试过 Ros...

2018-07-19 20:09:36

阅读数:69

评论数:0

Roslyn 语法树中的各种语法节点及每个节点的含义

使用 Roslyn 进行源码分析时,我们会对很多不同种类的语法节点进行分析。如果能够一次性了解到各种不同种类的语法节点,并明白其含义和结构,那么在源码分析的过程中将会更加得心应手。 本文将介绍 Roslyn 中各种不同的语法节点、每个节点的含义,以及这些节点之间的关系和语法树结构。 ...

2018-07-19 20:03:56

阅读数:38

评论数:0

WPF 使用 WindowChrome,在自定义窗口标题栏的同时最大程度保留原生窗口样式(类似 UWP/Chrome)

WPF 自定义窗口样式有多种方式,不过基本核心实现都是在修改 Win32 窗口样式。然而,Windows 上的应用就应该有 Windows 应用的样子嘛,在保证自定义的同时也能与其他窗口样式保持一致当然能最大程度保证 Windows 操作系统上的体验一致性。 本文将使用 WindowChrome...

2018-07-19 20:03:10

阅读数:87

评论数:0

在制作跨平台的 NuGet 工具包时,如何将工具(exe/dll)的所有依赖一并放入包中

NuGet 提供了工具类型的包支持,生成一个基于 .NET Core 的 dll 或者基于 .NET Framework 的 exe 之后,你几乎可以对项目做任何事情。但是,默认情况下,NuGet 不会将这些工具的依赖一起打包进入 NuGet 包 nupkg 文件内,这就使得功能比较复杂的跨平台 ...

2018-07-19 19:56:04

阅读数:44

评论数:0

如何在 .NET 库的代码中判断当前程序运行在 Debug 下还是 Release 下

我们经常会使用条件编译符 #if DEBUG 在 Debug 下执行某些特殊代码。但是一旦我们把代码打包成 dll,然后发布给其他小伙伴使用的时候,这样的判断就失效了,因为发布的库是 Release 配置的;那些 #if DEBUG 的代码根本都不会编译进库中。然而总有时候希望在库中也能得知程序是...

2018-07-05 21:01:47

阅读数:57

评论数:0

像黑客一样!Chrome 完全键盘操作指南(原生快捷键 + Vimium 插件)

有那么一波小伙伴,多数时候都不需要用到鼠标,通常他们正好是“黑客”。当你开始使用键盘操作一切时,便能体会到无需用鼠标瞄准按钮时的干脆,无需在键盘和鼠标之间移动手时的轻松。 Chrome 原生自带大量快捷键,Vimium 在原生的基础上又增加了大量网页操作。结合两者,你完全能摆脱鼠标。 ...

2018-07-05 21:01:11

阅读数:166

评论数:0

.NET 使用 XPath 来读写 XML 文件

XPath 是 XML 路径语言(XML Path Language),用来确定XML文档中某部分位置的语言。无论是什么语言什么框架,几乎都可以使用 XPath 来高效查询 XML 文件。 本文将介绍 .NET 中的 XPath 相关类型的使用。 本文读写的 XML 文件会以 文章末尾的代...

2018-06-26 20:58:08

阅读数:46

评论数:0

XML 的 XPath 语法

XPath 是 XML 路径语言(XML Path Language),用来确定XML文档中某部分位置的语言。无论是什么语言什么框架,几乎都可以使用 XPath 来高效查询 XML 文件。 本文将介绍 XPath 的一些语法。 本文读写的 XML 文件会以 文章末尾的代码 - 假设的 XM...

2018-06-26 20:56:44

阅读数:29

评论数:0

WPF 中使用附加属性,将任意 UI 元素或控件裁剪成圆形(椭圆)

不知从什么时候开始,头像流行使用圆形了,于是各个平台开始追逐显示圆形裁剪图像的技术。WPF 作为一个优秀的 UI 框架,当然有其内建的机制支持这种圆形裁剪。 不过,内建的机制仅支持画刷,而如果被裁剪的元素支持交互,或者拥有普通画刷无法达到的显示效果,那么就需要本文介绍的更加通用的解决方法了。 ...

2018-06-26 20:55:40

阅读数:41

评论数:0

Windows 10 四月更新,文件夹名称也能区分大小写?

Windows 向来是不区分文件和文件夹大小写的,但是从 NTFS 开始却又支持区分文件夹大小写。而 Linux/Mac OS 一向都是区分文件和文件夹大小写的。 本文将推荐 Windows 10 四月更新带来的新特性——让文件夹名称也能区分大小写。 本来文件系统是否区分大小写只是单纯风格...

2018-06-26 20:53:35

阅读数:167

评论数:0

C#/.NET 中推荐的 Dispose 模式的实现

如果你觉得你的类需要实现 IDisposable 接口,还是需要注意一些坑的。不过前人准备了 Dispose 模式 供我们参考,最大程度避免这样的坑。 C#程序中的 Dispose 方法,一旦被调用了该方法的对象,虽然还没有垃圾回收,但实际上已经不能再使用了。所以使用上要仔细考虑细节。 需...

2018-06-26 20:51:43

阅读数:53

评论数:0

如何使用 MSBuild Target(Exec)中的控制台输出

我曾经写过一篇文章 如何创建一个基于命令行工具的跨平台的 NuGet 工具包,通过编写一个控制台程序来参与编译过程。但是,相比于 基于 Task 的方式,可控制的因素还是太少了。 有没有什么办法能够让控制台程序也能与 MSBuild Target 之间发生更多的信息交换呢?答案是有的,通过捕获控...

2018-06-26 20:51:11

阅读数:63

评论数:0

如何根据一个绝对文件路径生成一个相对文件路径

日常的开发中,获取绝对文件路径才是主流吧!连 Path.GetFullPath 这种生成绝对路径的方法都已经成为 .NET Standard 的一部分了。 然而,生成相对路径依然有用——比如你的配置文件是相对于工作目录的,必须这个路径是输出给用户看的…… 那么,既然 Path 没有生成相对...

2018-06-26 20:48:29

阅读数:30

评论数:0

微软 Windows 系统检测网络连通性(用于显示感叹号)竟然是通过访问一个特殊网址来实现的

一次我走到了弱网环境中,意外地发现浏览器打开了 http://www.msftconnecttest.com/redirect 网址,随后右下角的网络图标出现了一枚“感叹号”。 吹水的推断 从直观看来,这个网址的连通性和网络图标上的“感叹号”有着直接的联系。那么到底有没有联系呢?于...

2018-06-26 20:48:02

阅读数:135

评论数:0

.NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?

本文将解释在 .NET 技术栈中各种不同使用方式下 N E T 三个字母何时大写何时小写;前面的 “.” 什么时候加上,什么时候去掉,什么时候又使用 “dot”。 .NET 在技术文档中 如果你阅读过 https://docs.microsoft.com/zh-cn/dotnet/...

2018-06-04 11:28:29

阅读数:81

评论数:2

Roslyn 入门:使用 .NET Core 版本的 Roslyn 编译并执行跨平台的静态的源码

Roslyn 是微软为 C# 设计的一套分析器,它具有很强的扩展性。以至于我们只需要编写很少量的代码便能够编译并执行我们的代码。 作为 Roslyn 入门篇文章之一,你将可以通过本文学习如何开始编写一个 Roslyn 扩展项目 —— 编译一个类,然后执行其中的一段代码。 本文是 Rosly...

2018-06-02 09:22:56

阅读数:278

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭