了解C#的Expression
我们书接上文,我们在了解LINQ下面有说到在本地查询IEnumerbale主要是用委托来作为传参,而解析型查询
IQueryable则用Expression来作为传参:
public static IEnumerable<T> Where<T>(this IEnumerable<T> enumable, Func<T, bool> func)
public static IQueryable<T> Where<T>(this IQueryable<T> queryable, Expression ...
c# System.Text.Json 精讲
本文内容来自我写的开源电子书《WoW C#》,现在正在编写中,可以去WOW-Csharp/学习路径总结.md at master · sogeisetsu/WOW-Csharp (github.com)来查看编写进度。预计2021年年底会完成编写,2022年2月之前会完成所有的校对和转制电子书工作,争取能够在2022年将此书上架亚马逊。编写此书的目的是因为目前.NET市场相对低迷 ...
C#中的记录(record)
从C#9.0开始,我们有了一个有趣的语法糖:记录(record)
为什么提供记录?
开发过程中,我们往往会创建一些简单的实体,它们仅仅拥有一些简单的属性,可能还有几个简单的方法,比如DTO等等,但是这样的简单实体往往又很有用,我们可能会遇到一些情况:
比如想要克隆一个新的实体而不是简单的引用传递 ...
C# Volatile
1.Overview
经常研究.NET源码库的小伙伴会经常看到一个关键字volatile,那它在开发当中的作用是什么呢?
我们一起来看看官方文档里是怎么描述的,如下:
“volatile 关键字指示一个字段可以由多个同时执行的线程修改。出于性能原因,编译器,运行时系统甚至硬件都可能重新排列对存储器位置的读取和写入。声明为 volatile ...
C#中ref关键字的用法总结
ref表示引用的意思,C#中它有多种用法,这里简单总结一下:
1、按引用传递参数
具体可见:C#中的值传递与引用传递(in、out、ref)
2、引用局部变量
引用局部变量指的是在变量声明时使用ref关键字(或者使用ref readonly表示未只读),表示这个变量是另一个变量的引用,而不是值对象的赋值,或者引用类 ...
C#中的值传递与引用传递(in、out、ref)
在C#中,方法、构造函数可以拥有参数,当调用方法或者构造函数时,需要提供参数,而参数的传递方式有两种(以方法为例):
值传递
值类型对象传递给方法时,传递的是值类型对象的副本而不是值类型对象本身。常用的一个例子:
public struct MyStruct
{
public int Value { get; set; }
...
深入xLua实现原理之C#如何调用Lua
本文主要是探讨xLua下C#调用Lua的实现原理,有关Lua如何调用C#的介绍可以查看深入xLua实现原理之Lua如何调用C#
C#与Lua数据通信机制
无论是Lua调用C#,还是C#调用Lua,都需要一个通信机制,来完成数据的传递。而Lua本身就是由C语言编写的,所以它出生自带一个和C/C++的通信机制。
Lua和C/C++的数据交互通过栈进行,操作数据 ...
C#导出数据—使用Word模板
前言
本文主要介绍C#使用标签替换的方法导出数据,导出的数据模板使用Word文档。
模板建立
首先创建一个Word文档,然后建立一个基础模板。然后将上方菜单切换到插入菜单。
然后在想填充数据的地方添加书签,如下图,光标在年的前方,点击上方的书签按钮。
书签全部添加完如下图所示:
书签默认是看不到的,我们可以打开文 ...
C#中List是链表吗?为什么可以通过下标访问
使用C#的同学对List应该并不陌生,我们不需要初始化它的大小,并且可以方便的使用Add和Remove方法执行添加和删除操作,但却可以使用下标来访问它的数据,它是我们常说的链表吗?
List<int> ls = new List<int>(); ls.Add(1); Console.WriteLine(ls[0]); //输出 1
先简单 ...
C# .NET Core 3.1 中 AssemblyLoadContext 的基本使用
C# .NET Core 3.1 中 AssemblyLoadContext 的基本使用
前言
之前使用 AppDomain 写过一个动态加载和释放程序的案例,基本实现了自己“兔死狗烹”,不留痕迹的设想。无奈在最新的 .NET Core 3.1 中,已经不支持创建新的 AppDomain 了(据说是因为跨平台实现太重了),改为使用 AssemblyLoadContext 了。不过总体使用下来感觉 ...
深入xLua实现原理之Lua如何调用C#
xLua是腾讯的一个开源项目,为Unity、 .Net、 Mono等C#环境增加Lua脚本编程的能力。本文主要是探讨xLua下Lua调用C#的实现原理。
Lua与C#数据通信机制
无论是Lua调用C#,还是C#调用Lua,都需要一个通信机制,来完成数据的传递。而Lua本身就是由C语言编写的,所以它出生自带一个和C/C++的通信机制。
Lua和C/C++的数据交互通过 ...
浅谈C#更改令牌ChangeToken
前言
在上篇文章浅谈C#取消令牌CancellationTokenSource一文中我们讲解了CancellationTokenSource,它的主要功能就是分发一个令牌,当我取消令牌我可以进行一些回调操作或者通过令牌状态得知被取消。在上文的结尾处我们也提到了,默认情况下CancellationTokenSource产生的Token是一次性的,Cancel ...
C# 入门实战系列文章
【时常听人说,一文解读某某技术,啥啥只看一文就够了,但一篇文章真的就能解读的了吗?不管你信不信,反正我是不信。】做为一个十多年开发经验的老程序员,在工作中,接触过各种各样的开发语言,前端后端都略有涉猎,如:Html,JavaScript,CSS,Java,C#,Pascal,SQL等,每一种语言都有其应用场景及优势,并不是说一种语 ...
浅谈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#功能异 ...