浅谈C#取消令牌CancellationTokenSource
前言
相信大家在使用C#进行开发的时候,特别是使用异步的场景,多多少少会接触到CancellationTokenSource。看名字就知道它和取消异步任务相关的,而且一看便知大名鼎鼎的CancellationToken就是它生产出来的。不看不知道,一看吓一跳。它在取消异步任务、异步通知等方面效果还是不错的,不仅好用而 ...
API文档生成(c# dll)
一、Sandcastle
这个是c#类库方法根据注释生成帮助文档的工具,我们经常会遇到把DLL或者API提供给别人调用的情况,通过在方法中添加注释,然后再用Sandcastle 来自动生成文档给调用者,如下图:
图1:这是Sandcastle Help File Builder软件界面
图2:这是生成的chm文档
还可以直接给出 ...
C# 10 完整特性介绍
前言
开头防杠:.NET 的基础库、语言、运行时团队从来都是相互独立各自更新的,.NET 6 在基础库、运行时上同样做了非常多的改进,不过本文仅仅介绍语言部分。
距离上次介绍 C# 10 的特性已经有一段时间了,伴随着 .NET 6 的开发进入尾声,C# 10 最终的特性也终于敲定了。总的来说 C# 10 的更新内容很多,并且对类型系统做了 ...
C#.NET 国密SM3withSM2签名与验签 和JAVA互通
C# 基于.NET FRAMEWORK 4.5
JAVA 基于 JDK1.8
一、要点
1.签名算法:SM3withSM2。
2.签名值byte[] 转字符串时,双方要统一,这里是BASE64。
二、工具类和调用DEMO
C#
引用了BouncyCastle.Crypto类库,在nuget上下载最新即可。
工具类:
using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Asn1.G ...
如何掌握C#的核心技术
如何掌握C#的核心技术
原图链接
引子
前不久看到一个段子,某年宁波交警引进人脸识别技术抓拍行人闯红灯,结果一天下来被发现闯红灯次数最多的是珠海女子董小姐,日闯红灯3000多次。宁波交警连夜研究抓捕方案,最后分析发现,原来是大巴车上的某掌握核心的产品广告被错误识别了。
这家自称掌握了核心的制造企业,虽然并非 ...
C# BS方向 该如何规划学习?【学习路线指南】
C#学习路线指南
花费了几天时间整理了C#学习路线图,可以说是纯野生C#程序员成长路线规划,在这里分享下,希望可以帮助到想从事C#开发的同学们。本人阅历尚浅,有些知识点可能分享不正确,希望广大网友评论区补充,我会同步修正更新。
题记
最近自己一直在想,一个初学者刚开始应该学些什么,该学习到哪种程度找工作才不 ...
[翻译]Go与C#对比 第三篇:编译、运行时、类型系统、模块和其它的一切
Go vs C#, Part 3: Compiler, Runtime, Type System, Modules, and Everything Else | by Alex Yakunin | ServiceTitan — Titan Tech | Medium
目录译者注相似性编译垃圾回收模块类、结构、接口错误处理相等性(==, !=)基础类库两种语言中存在的其他类似特征类似的反模式/设计错误C#中缺少的Go功能Go中缺少的C#功能异 ...
[翻译]Go与C#的比较,第二篇:垃圾回收
Go vs C#, part 2: Garbage Collection | by Alex Yakunin | ServiceTitan — Titan Tech | Medium
目录译者注什么是垃圾回收?什么是GCBurn?峰值分配吞吐量("速度测试")GCBurn 测试GC Burn测试结果结论.NET CoreGo两者的相同点免责声明和后记
译者注
本文90%通过机器翻译,另外10%译者按照自己的理解进行翻译,和原 ...
一探即将到来的 C# 10
前言
本来因为懒不想写这篇文章,但是不少人表示有兴趣,于是最后决定还是写一下。
.NET 6 最近几个预览版一直都在开发体验(如 hot reload、linker 等)、平台支持(如 Android、iOS 等)、工具链(如 crossgen2、PGO 工具和 wasm 的 AOT 等)、JIT(如 LSRA、Jump threading、PGO 和 guarded devirtualization 以及使 str ...
[翻译] 预览 C# 10 的新东西
原文: [Introducing C# 10]
作者: Ken Bonny
本周早些时候(译注:原文发表于5月1日),我关注了 Mads Torgersen 在 DotNet SouthWest 大会上的演讲,他是微软的 C# 语言的首席设计师。他概述了 C# 10 即将包含的很酷的一些新东西。让我们来快速浏览一下。
小小的免责声明,这些变化中的大部分已经基本完成。但是由于它仍 ...
C#类中方法的执行顺序
有些中级开发小伙伴还是搞不太明白在继承父类以及不同场景实例化的情况下,父类和子类的各种方法的执行顺序到底是什么,下面通过场景的举例来重新认识下方法的执行顺序:
(下面内容涉及到了C#中的继承,构造函数,虚方法,虚方法的重写,new关键字等知识点)
场景一
有子类继承,但是只实例化父类:只执行A对象,输出A对象 ...
C#事件总线
目录简介实现事件总线定义事件基类定义事件参数基类定义EventBus使用事件总线事件及事件参数定义发布者定义订阅者实际使用总结参考资料
简介
事件总线是对发布-订阅模式的一种实现,是一种集中式事件处理机制,允许不同的组件之间进行彼此通信而又不需要相互依赖,达到一种解耦的目的。
实现事件总线
EventBus维护一个事件 ...
[C#] 使用 NAudio 实现音频可视化
预览:
捕捉声卡输出:
实现音频可视化, 第一步就是获得音频采样, 这里我们选择使用计算机正在播放的音频作为采样源进行处理:
NAudio 中, 可以借助 WasapiLoopbackCapture 来进行捕捉:
WasapiLoopbackCapture cap = new WasapiLoopbackCapture();
cap.DataAvailable += (sender, e) => // 录制数据可用时触发此事件, 参 ...
LINQPad,我的C#/.NET学习诀窍
LINQPad,我的C#/.NET学习诀窍
在我以往的文章中,尤其涉及代码演示的,都使用了同一个工具——LINQPad。但许多客户面对我分享的.linq源文件都迷茫不知所措,因此有必要来聊聊一下这个强大的工具。
本文首先将对该工具做个简单的介绍,并且分享一些LINQPad的优点,并同时分享一些周边替代工具以及它们的优缺点。
LINQPad是 ...
如何从 dump 文件中提取出 C# 源代码?
一:背景
相信有很多朋友在遇到应用程序各种奇葩问题后,拿下来一个dump文件,辛辛苦苦分析了大半天,终于在某一个线程的调用栈上找到了一个可疑的方法,但 windbg 常常是以 汇编 的方式显示方法代码的,可惜的是,现如今的汇编,有多少像我们这些速成系码农还看的懂呢? 😂😂😂
接下来尖锐的问题就来了,如何将这些汇编代 ...
C#异步编程由浅入深(一)
一、什么算异步?
广义来讲,两个工作流能同时进行就算异步,例如,CPU与外设之间的工作流就是异步的。在面向服务的系统中,各个子系统之间通信一般都是异步的,例如,订单系统与支付系统之间的通信是异步的,又如,在现实生活中,你去馆子吃饭,工作流是这样的,点菜->下单->做你的事->上菜->吃饭,这个也是异步的,具 ...
一个C#开发编写Java框架的心路历程
前言
这一篇絮絮叨叨,逻辑不太清晰的编写Java框架的的一个过程,主要描述我作为一个java初学者,在编写Java框架时的一些心得感悟。
因为我是C#的开发者,所以,在编写Java框架时,或多或少会带入一些C#的固有观念,所以,这也是一个C#观念与Java观念碰撞的一个框架。
Java与C#的一些小区别
命名空间:在C#中命名空间+类名 ...
如何在 C# 中使用 Channels
在面对 生产者-消费者 的场景下, netcore 提供了一个新的命名空间 System.Threading.Channels 来帮助我们更高效的处理此类问题,有了这个 Channels 存在, 生产者 和 消费者 可以各自处理自己的任务而不相互干扰,有利于两方的并发处理,这篇文章我们就来讨论下如何使用 System.Threading.Channels。
Dataflow vs Channel
...
理解C#泛型运作原理
前言
我们都知道泛型在C#的重要性,泛型是OOP语言中三大特征的多态的最重要的体现,几乎泛型撑起了整个.NET框架,在讲泛型之前,我们可以抛出一个问题,我们现在需要一个可扩容的数组类,且满足所有类型,不管是值类型还是引用类型,那么在没有用泛型方法实现,如何实现?
一.泛型之前的故事
我们肯定会想到用object来 ...
C# 使用 Index 和 Range 简化集合操作
C# 使用 Index 和 Range 简化集合操作
Intro
有的语言数组的索引值是支持负数的,表示从后向前索引,比如:arr[-1]
从 C# 8 开始,C# 支持了数组的反向 Index,和 Range 操作,反向 Index 类似于其他语言中的负索引值,但其实是由编译器帮我们做了一个转换,Range 使得我们对数组截取某一部分的操作会非常简单,下面来看一 ...