理解C#泛型运作原理
前言
我们都知道泛型在C#的重要性,泛型是OOP语言中三大特征的多态的最重要的体现,几乎泛型撑起了整个.NET框架,在讲泛型之前,我们可以抛出一个问题,我们现在需要一个可扩容的数组类,且满足所有类型,不管是值类型还是引用类型,那么在没有用泛型方法实现,如何实现?
一.泛型之前的故事
我们肯定会想到用object来 ...
C# 模式匹配完全指南
前言
自从 2017 年 C# 7.0 版本开始引入声明模式和常数模式匹配开始,到 2022 年的 C# 11 为止,最后一个板块列表模式和切片模式匹配也已经补齐,当初计划的模式匹配内容已经基本全部完成。
C# 在模式匹配方面下一步计划则是支持活动模式(active pattern),这一部分将在本文最后进行介绍,而在介绍未来的模式匹配计划之前 ...
C# 人脸识别库 0.1
[next ViewFaceCore 0.2]
.NET 人脸识别库 ViewFaceCore
这是基于 SeetaFace6 人脸识别开发的 .NET 平台下的人脸识别库这是一个使用超简单的人脸识别库这是一个基于 .NET Standard 2.0 开发的库这个库已经发布到 NuGet ,你可以一键集成到你的项目此项目可以免费商业使用
⭐、开源
开源协议:Apache-2.0GitHub地址: ViewFa ...
C#的进化——C#发展史、C#1.0-10.0语法系统性梳理、C#与JAVA的对比
C#的进化
C#发展史、C#1.0-10.0语法系统性梳理、C#与JAVA的对比
前言
C#也使用了十年有余了。
一路走来,见证了微软从封闭走向开放,从平台捆绑,到成为活跃于Github的重要贡献者。亲历了C#的开创性引领和影响了诸多语言,也看到了其他语言的优秀机制被有机的融合进C#(好吧,我承认语言之间都在互相抄)。在微软的“开发 ...
C# 彻底搞懂async/await
1. 前言
Talk is cheap, Show you the code first!
private void button1_Click(object sender, EventArgs e)
{
Console.WriteLine("111 balabala. My Thread ID is :" + Thread.CurrentThread.ManagedThreadId);
AsyncMethod();
Console.WriteLine("222 balabala. My Thread ID is :" + Thread.CurrentThread ...
理解C#中的ValueTask
原文:https://devblogs.microsoft.com/dotnet/understanding-the-whys-whats-and-whens-of-valuetask/
作者:Stephen
翻译:xiaoxiaotank
备注:本文要求读者对Task有一定的了解,文章文字描述较多,但内容十分充实,相信你认真阅读后,一定让你受益匪浅。
前言
Task类是在.NET Framework 4引入的,位于System.Threading ...
理解C#中的 async await
前言
一个老掉牙的话题,园子里的相关优秀文章已经有很多了,我写这篇文章完全是想以自己的思维方式来谈一谈自己的理解。(PS:文中涉及到了大量反编译源码,需要静下心来细细品味)
从简单开始
为了更容易理解这个问题,我们举一个简单的例子:用异步的方式在控制台上分两步输出“Hello World!”,我这边使用的是Framework ...
C# 9.0新特性
CandidateFeaturesForCSharp9
看到标题,是不是认为我把标题写错了?是的,C# 8.0还未正式发布,在官网它的最新版本还是Preview 5,通往C#9的漫长道路却已经开始.前写天收到了活跃在C#一线的BASSAM ALUGILI给我分享C# 9.0新特性,我在他文章的基础上进行翻译,希望能对大家有所帮助.
这是世界上第一篇关于C#9候选功能的文章。阅 ...
C#.Net筑基-集合知识全解
01、集合基础知识
.Net 中提供了一系列的管理对象集合的类型,数组、可变列表、字典等。从类型安全上集合分为两类,泛型集合 和 非泛型集合,传统的非泛型集合存储为Object,需要类型转。而泛型集合提供了更好的性能、编译时类型安全,推荐使用。
.Net中集合主要集中在下面几个命名空间中:
1.1、集合的起源:接口关系
...
C#最新功能(6.0、7.0)
一直用C#开发程序,.NET的功能越来越多,变化也挺大的,从最初的封闭,到现在的开源,功能不断的增加,一直在进步。作为C#的强烈支持者,C#的变化,我不能不关注,这篇文章主要介绍,C#6.0和C#7.0增加的功能。C#的发展史和.NET以前的版本,请看C#和.NET版本,这边文章中有介绍。
C# 6.0版
1. 静态导入
using static 增强功 ...
C#高性能开发之类型系统:从 C# 7.0 到 C# 14 的类型系统演进全景
自C# 7.0以来,C#语言在类型系统方面引入了众多新数据类型、类型构造和语言特性,以提升性能、类型安全性和开发效率。本文全面整理了从C# 7.0到C# 14.0(截至2025年4月,C# 14.0为预览版)类型系统的新增内容,包括值元组、Span<T>、ReadOnlySpan<T>、Memory<T>、ReadOnlyMemory<T>、可空引用类型、记录、本机大小整数、记 ...
C#网络编程入门之UDP
一、概述
UDP和TCP是网络通讯常用的两个传输协议,C#一般可以通过Socket来实现UDP和TCP通讯,由于.NET框架通过UdpClient、TcpListener 、TcpClient这几个类对Socket进行了封装,使其使用更加方便, 本文就通过这几个封装过的类讲解一下相关应用。
二、UDP基本应用
与TCP通信不同,UDP通信是不分服务端和客户端 ...
C# Mapster 对象映射器(C#对象映射器)
前言
谈到对象映射器,AutoMapper 知名度是非常的高,但很少有人知道 Mapster。而为什么选择 Mapster 呢?
理由一:性能优于 AutoMapper ,相关测试位于https://github.com/MapsterMapper/Mapster上查看。
理由二:多学习一项技能
网上查了一下,关于 Mapster 的资料非常少,所以在这里我们详细写下它的用法,以帮助更多的 ...
C#解析JSON数组
方式一
第一步:使用前,需下载:Newtonsoft.Json.dll
没有的,请到我百度云盘下载
链接:https://pan.baidu.com/s/1JBkee4qhtW7XOyYFiGOL2Q 提取码:b5uq
第二步:引入命名空间:using Newtonsoft.Json;
第三步:封装一个函数,方便以后使用
待解析JSON数组
函数:
public static Newtonsoft.Json.Linq.JArr ...
[03] C# Alloc Free编程
C# Alloc Free编程
首先Alloc Free这个词是我自创的, 来源于Lock Free. Lock Free是说通过原子操作来避免锁的使用, 从而来提高并行程序的性能; 与Lock Free类似, Alloc Free是说通过减少内存分配, 从而提高托管内存语言的性能.
基础理论
对于一个游戏服务器来讲, 玩家数量是一定的, 那么这些玩家的输入也就是一定的; 对于每 ...
C#Modbus Rtu的实现
Modbus Rtu的实现与Modbus Tcp的实现类似 C#ModBus Tcp的学习及Master的实现
我们还是需要借用一个开源库NModbus4,在vs中.打开NuGet管理器.安装NModbus4
具体实现,具体实现与之前的Modbus Tcp的实现类似 ,只是在实例化master时将TCPClient换为串行端口资源SerialPort,并在实例化是设置好端口所需参数(端口名,波特率 ...
C#基础:C#中的深拷贝和浅拷贝
一、什么是深拷贝和浅拷贝
对于所有面向对象的语言,复制永远是一个容易引发讨论的题目,C#中也不例外。此类问题在面试中极其容易被问到,我们应该在了解浅拷贝和深拷贝基本概念的基础上,从设计的角度进一步考虑如何支持对象的拷贝。
在System.Object类中,有一个受保护的方法object.MemberwiseClone(),这个方法实现了对象 ...
C# 中的本地函数
目录引入本地函数的原因本地函数是什么本地函数与 Lambda 表达式的比较命名参数和返回值类型明确赋值变量捕获内存分配范型和迭代器本地函数与异常总结
今天我们来聊一聊 C# 中的本地函数。本地函数是从 C# 7.0 开始引入,并在 C# 8.0 和 C# 9.0 中加以完善的。
引入本地函数的原因
我们来看一下微软 C# 语言首席设计师 Mads ...
C# 11 的新特性和改进前瞻
前言
.NET 7 的开发还剩下一个多月就要进入 RC,C# 11 的新特性和改进也即将敲定。在这个时间点上,不少新特性都已经实现完毕并合并入主分支
C# 11 包含的新特性和改进非常多,类型系统相比之前也有了很大的增强,在确保静态类型安全的同时大幅提升了语言表达力。
那么本文就按照方向从 5 个大类来进行介绍,一起来提前看看 ...
C#-接口(Interface)详解
定义
在 C# 语言中,类之间的继承关系仅支持单重继承,而接口是为了实现多重继承关系设计的。一个类能同时实现多个接口,还能在实现接口的同时再继承其他类,并且接口之间也可以继承。无论是表示类之间的继承还是类实现接口、接口之间的继承,都使用“:”来表示。
接口定义了属性、方法和事件,这些都是接口的成员。接口只 ...