你所不知道的 C# 中的细节
前言
有一个东西叫做鸭子类型,所谓鸭子类型就是,只要一个东西表现得像鸭子那么就能推出这玩意就是鸭子。
C# 里面其实也暗藏了很多类似鸭子类型的东西,但是很多开发者并不知道,因此也就没法好好利用这些东西,那么今天我细数一下这些藏在编译器中的细节。
不是只有 Task 和 ValueTask 才能 await
在 C# 中编写异步代码的 ...
C# 彻底搞懂async/await
关键:
异步方法:在执行完成前立即返回调用方法,在调用方法继续执行的过程中完成任务。
async/await 结构可分成三部分:
(1)调用方法:该方法调用异步方法,然后在异步方法执行其任务的时候继续执行;
(2)异步方法:该方法异步执行工作,然后立刻返回到调用方法 ...
解析“60k”大佬的19道C#面试题(下)
解析“60k”大佬的19道C#面试题(下)
在上篇中,我解析了前 10 道题目,本篇我将尝试解析后面剩下的所有题目。
姐妹篇:解析“60k”大佬的19道C#面试题(上)
这些题目确实不怎么经常使用,因此在后文中,我会提一组我的私房经典“6k面试题”,供大家轻松一刻。
先略看题目:
简述 LINQ 的 lazy computation 机制
利用 ...
解析“60k”大佬的19道C#面试题(上)
解析“60k”大佬的19道C#面试题(上)
先略看题目:
请简述async函数的编译方式
请简述Task状态机的实现和工作机制
请简述await的作用和原理,并说明和GetResult()有什么区别
Task和Thread有区别吗?如果有请简述区别
简述yield的作用
利用IEnumerable<T>实现斐波那契数列生成
简述stackless coroutine和stackful coroutin ...
C# lock 自旋锁,互斥锁,混合锁,读写锁介绍
c# 并行编程、多线程开发中,经常要用到线程锁,so, 看了许多文章,想总结一下,供自己理解记忆,以及园丁们参考使用,理解的不怎么全面,勿喷!在多线程环境中,多个线程可能会同时访问同一个资源,为了避免访问发生冲突,可以根据访问的复杂程度采取不同的措施,原子操作适用于简单的单个操作,无锁算法适用于相对 ...
一 、C#调用Python的使用总结
由于项目的需要,需要通过C#调用Python文件(算法)。之前接触不多,在测试试验的过程遇到了挺多坑的,在这里将试验的过程和结果在这里总结一下。
一.使用IronPython作为移植的依赖库,直接调用python文件的函数接口。
百度词条:IronPython 是一种在 NET 和 Mono 上实现的 Python 语言, ...
C# IoC学习笔记
一、引言
IoC-Invertion of Control,即控制反转,是一种程序设计思想。
先初步了解几个概念:
依赖(Dependency):就是有联系,表示一个类依赖于另一个类。
依赖倒置原则(DIP):设计模式六大原则之一,是一种软件架构设计原则。 ...
浅谈C# Dictionary实现原理
使用C#已经有好多年头了,然后突然有一天被问到C#Dictionary的基本实现,这让我反思到我一直处于拿来主义,能用就好,根本没有去考虑和学习一些底层架构,想想令人头皮发麻。下面开始学习一些我平时用得理所当然的东西,今天先学习一下字典,Dictionary
一、Dictionary源码学习
Dictionary实现我们主要对照源码来解析,目前 ...
c#值get、 set用法
在程序中经常碰到get、set,不甚明白,在网上查询时也说的迷迷糊糊,所以整理下,以学的明白透彻点。
有两个类person:
public class person
{
public string name;
}
public class person
{
public string Name{set;get;}
}
&n ...
从未来看 C#
前言
如今 C# 虽然发展到了 8.0 版本,引入了诸多的函数式特性,但其实在 C# 未来的规划当中,还有很多足以大规模影响现有 C# 代码结构和组成的特性,本文中将会对就重要的特性进行介绍,并用代码示例展示这些特性。
以下特性将会在 C# 9.0、10.0 或者更高版本提供。
Records
Records 是一种全新的简化的 C# class 和 struc ...
C#开发: 通信篇-串口调试助手
说明
这节教给用户使用C#做一个串口调试助手,
用户可在此基础上依据自己的需求做修改
本人的其它关于串口通信的上位机也会在此基础上做修改,
请用户认真学习本节.
新建工程
布局串口配置页面
1.拖拽上来一个 Gro ...
代码演示C#各版本新功能
代码演示C#各版本新功能
C#各版本新功能其实都能在官网搜到,但很少有人整理在一起,并通过非常简短的代码将每个新特性演示出来。
代码演示C#各版本新功能
C# 2.0版 - 2005
泛型
分部类型
匿名方法
可以为null的值类型
迭代器
协变和逆变
C# 3.0版 - 2007
自动实现的属性
匿名类型
查询表达式(LINQ)
Lambda表达式
...
C#基础:using语句的用法
一、using语句
using可以算是.NET中新的语法元素,它清楚地说明一个通常比较占用资源的对象何时开始使用和何时被手动释放。当using可以被使用时,建议尽量使用using语句。至今为止,使用using语句发现它带给程序员的只有优点,而没有任何弊端。
在.NET的环境中,托管的资源都将由.NET的垃圾回收机制来释放,而一些非托管的 ...
C#基础:C#中的深拷贝和浅拷贝
一、什么是深拷贝和浅拷贝
对于所有面向对象的语言,复制永远是一个容易引发讨论的题目,C#中也不例外。此类问题在面试中极其容易被问到,我们应该在了解浅拷贝和深拷贝基本概念的基础上,从设计的角度进一步考虑如何支持对象的拷贝。
在System.Object类中,有一个受保护的方法object.MemberwiseClone(),这个方法实现了对象 ...
【5min+】 巨大的争议?C# 8 中的接口
系列介绍
【五分钟的dotnet】是一个利用您的碎片化时间来学习和丰富.net知识的博文系列。它所包含了.net体系中可能会涉及到的方方面面,比如C#的小细节,AspnetCore,微服务中的.net知识等等。
5min+不是超过5分钟的意思,"+"是知识的增加。so,它是让您花费5分钟以下的时间来提升您的知识储备量。
正文
伴随着 .NET Core 3 ...
C# Task详解
C# Task和async/await详解
什么是异步
同步和异步主要用于修饰方法。当一个方法被调用时,调用者需要等待该方法执行完毕并返回才能继续执行,我们称这个方法是同步方法;当一个方法被调用时立即返回,并获取一个线程执行该方法内部的业务,调用者不用等待该方法执行完毕,我们称这个方法为异步方法。
异步的好处在于非阻 ...
如何获取 C# 类中发生数据变化的属性信息
一、前言
在平时的开发中,当用户修改数据时,一直没有很好的办法来记录具体修改了那些信息,只能暂时采用将类序列化成 json 字符串,然后全塞入到日志中的方式,此时如果我们想要知道用户具体改变了哪几个字段的值的话就很困难了。因此,趁着这个假期,就来解决这个一直遗留的小问题,本篇文章记录了我目前实现的方法,如 ...
C#反射与特性(九):全网最全-解析反射
目录1,判断类型判断是否某种类型1.1 类和委托1.1.1 判断是否类型或委托1.1.2 判断是否泛型1.1.3 泛型的参数名称和泛型限定泛型约束GenericParameterAttributes 枚举泛型约束关系1.1.4 是否委托1.1.5 访问修饰符1.1.6 密封类、静态类型、抽象类1.1.7 嵌套类访问权限1.1.8 特性1.1.9 父类、接口1.2 值类型1.3 接口1.4 数组2 ...
C# 中 ConfigureAwait 相关答疑FAQ
C# 中 ConfigureAwait 相关答疑FAQ
在前段时间经常看到园子里有一些文章讨论到 ConfigureAwait,刚好今天在微软官方博客看到了 Stephen Toub 前不久的一篇答疑 ConfigureAwait 的一篇文章,想翻译过来。
原文地址:https://devblogs.microsoft.com/dotnet/configureawait-faq/
.NET 加入 async/await 特性已经有 7 年了。这 ...
C#中HttpClient的使用小结
C#中HttpClient的使用小结
雨少主
宅
已关注
112 人赞同了该文章
在之前的一周里,我利用业余时间帮人做视频下载工具,花了差不多20小时。期间发生的一些事情令我很不愉快,虽然到底是写好了相关类库,但最终成品是不打算做了。好在这段时间算是把 HttpClient 的相关知识复习了一遍,倒也不算 ...