这是一期非常有意思的视频,UP 主浏览了一篇 Java VS C#
的文章,虽然是发布日期就在最近,也就是 2022 年 6 月,但是文章中充满了对 C#
的偏见和无数个互相排斥的观点。
想要在自己 MUAI
应用程序中包含漂亮的 UI ?Snppts
网站可以帮助到你。它提供了众多的 MUAI
应用程序的 UI,并且包含源码。
在 .NET
的开发世界里,Azure
是一个绕不开的开发平台,在这个平台上有多种服务可以选择,这篇文章介绍了 Azure 上常见的服务:
- Window/Linux
- 容器化
- 微服务
- Azure Storage/CDN
- Static Web Apps
- Azure App Service
- Azure 虚拟机
- Azure Functions
- Azure Kubernetes Service
- Container App
- Service Fabric
2、集合拼接比较
将两个集合拼接起来是常见的开发需求,那么在 C#
中该如何实现呢?这篇文章尝试了多种方式,主要有
List
的Add
方法Enumerable.Concat
方法Enumerable.Union
方法List
的AddRange
方法Array
的CopyTo
方法SelectMany
方法
通过 Benchmark
比较,一般而言AddAndRange
是性能最好。
在同步代码中,如果要避免条件竞争,通常会选择 lock
关键字来保证任何时刻只有一个线程能够访问该资源,例如:
private object obj = new object();
lock(obj)
{
// code
}
但是对于异步方法,首先编译器会报错,因为异步方法不能在 lock
的语句中,那么我们该怎么办呢?答案是 SemaphoreSlim
类。
private SemaphoreSlim semaphore = new SemaphoreSlim(1);
async Task DoWork()
{
await semaphore.WaitAsync();
await DoAnotherWork();
semaphore.Release();
}
LINQ
是 .NET
平台上最强大的工具之一,它在 .NET 6
中也有新的提升,主要包含
FirstOrDefault
和SingleOrDefault
可以指定默认返回值,而不是类型的默认值MinBy
,MaxBy
,DistinctBy
等方法,可以指定属性Chunk
方法可以将枚举类型按照相应的数量分块Zip
方法支持三个枚举类型- 新的
Index
和Range
语法糖支持
5、GC 文章推荐
Maoni Stephens 是微软负责 .NET
GC 的架构师,这个仓库包含了她过去对 GC
内容的分享的材料,也是我们 GC 性能调优的参考资料。
1、UnitNet
单位运算是开发过程中常常会遇到的问题,比如长度,面积,体积等等。这时候不仅仅需要编程的知识,还需要相应的物理知识。UnitsNet
包可以帮助你解决大部分问题。
最近 Community Toolkit
包已经发布,它是从 Windows Community Toolkit
演化过来,所以版本号直接变成 8.0.0
, 这次发布移除的 Windows
系统的依赖,变成一个通用的跨平台工具包。随着 MAUI
的正式发布,该包对 MUAI
提供了大量的帮助,最重要的是 MVVM
的支持。
Visual Studio
有一个 Rest Client
的插件,可以直接在 Visual Studio
中执行一个 .http
的问题,该文件可以直接直接发起 HTTP
请求。
GET https://bing.com
@hostname = localhost
@port = 5143
@host = http://{{hostname}}:{{port}}
@contentType = application/json
PUT {{host}}/user/update/1
Content-Type: {{contentType}}
{
"userName": "kchintala",
"firstName": "Karthik",
"lastName": "Chintala"
}
quartnet 是一个开源的作业调度框架,是 OpenSymphony 的 Quartz API 的.NET 移植,它用 C#写成,可用于各种 C#应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而 创建简单的或复杂的调度。它有很多特征,如:数据库支持,集群,插件,支持 cron-like 表达式等等。