
C#
文章平均质量分 66
草原上唱山歌
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C#系统学习路线
分享C#程序员成长学习路线,包括计算机基础、C#基础、面向对象、进阶、前端、数据库、高级知识及.NETCore。建议学习C语言、数据结构等,掌握C#语法、面向对象、前端技术、数据库操作及高级框架。C#岗位多集中在政府、军工、制造业。原创 2024-10-09 20:54:52 · 2328 阅读 · 0 评论 -
C#如何进阶?
如果你想走C#开发这条路线,想要在这条道路上走得更远,你要从基础到进阶,从后端到前端,在到运维,全面发展自己,千万别觉得麻烦。进阶的话,你的C#基础必须要扎实,像最基础的C#语法、LINQ、委托、集合、异步编程等,你必须要熟练掌握。原创 2024-08-21 23:34:08 · 681 阅读 · 0 评论 -
值类型和引用类型详解(C#)
值类型和引用类型,是c#比较基础,也必须掌握的知识点,但是也不是那么轻易就能掌握,今天跟着我一起来看看吧。原创 2024-02-25 16:18:17 · 1953 阅读 · 0 评论 -
C#设计模式---工厂方法模式
重新学习和理解24种设计模式,本文讲解设计模式之一的工厂方法模式,希望有助于大家重新进行理解;原创 2024-02-25 14:39:03 · 460 阅读 · 0 评论 -
AsyncLocal是如何实现在Thread直接传值的?
这个问题的由来是在.NET高级调试训练营第十期分享ThreadStatic底层玩法的时候,有朋友提出了AsyncLocal是如何实现的,虽然做了口头上的表述,但总还是会不具体,所以觉得有必要用文字+图表的方式来系统的说一下这个问题。原创 2024-01-30 23:13:18 · 781 阅读 · 1 评论 -
async和await详解(C#)
详解C#中async和await在编译器层面转化为IL层面的代码,然后再将IL层面的代码还原成C#代码,让你对async和await有深入的理解,同时也希望你给我提供出宝贵的意见,让我也能够认识到自己的不足,在后续进行改正和优化。原创 2023-11-29 22:23:23 · 1222 阅读 · 0 评论 -
ref详解(C#)
ref详细讲解,以及在汇编层面的理解原创 2023-11-25 19:54:08 · 1783 阅读 · 0 评论 -
Task.Run为什么会存在内存泄漏的风险?
这篇文章给你介绍Task.Run为什么会存在潜在的内存泄漏风险?以及介绍CLR中分带算法的原理,GC是如何对资源进行回收的?希望对你有所帮组。原创 2023-11-25 17:48:35 · 1279 阅读 · 0 评论 -
nint和Pattern matching介绍(C#)
最近看到nint和Pattern matching,处于好奇心的趋势,就去了解了一下这两个特性,希望能够对你是有帮助的原创 2023-11-22 23:16:40 · 640 阅读 · 0 评论 -
C#与C++进行字段内存对齐
在C#中,如何像C/C++中那样,将C#中的字段进行对齐?并在与C/C++进行交互时,字段保持一致。原创 2023-11-22 20:19:57 · 542 阅读 · 0 评论 -
闭包(C#)
通常来讲,大家一听到闭包,应该首先会想到JavaScript中的闭包,而不会想到C#中的闭包,但是C#中也是有闭包的,下面就让我来为大家仔细讲解讲解。在C#中,我们通常知道变量作用域有三种:1、是属于类的,我们常称之为field,2、是属于函数的,我们通常称之为局部变量,3、其实也是属于函数的,不过它的作用范围更小,它只属于函数局部的代码片段,这种我们同样称之为局部变量。原创 2023-10-08 20:34:32 · 1402 阅读 · 0 评论 -
LINQ详解二(C#)
本文讲解C#中LINQ常见语法,并给出了每一个功能模块的例如,供大家学习思考。如果有什么写的不对,请及时纠正我,我很乐意与大家一起学习。原创 2023-10-08 19:35:22 · 329 阅读 · 0 评论 -
LINQ详解(查询表达式)
本文章主要是对C#中LINQ查询表达式的详解,讲解的还是比较全面,能够帮助初学者认识什么是LINQ,以及基础的使用LIN。同时,文章每个讲解模块还附带例程,帮助初学者更好的学习或者帮助有LINQ基础的人进行巩固,能够对LINQ认识的比较全面,但是文章也有可能有欠缺的地方,讲解的不够完善,或者有的知识点遗漏等,还希望广大的读者帮我多多指正,有了你的指正,才能让我写出更好的文章为你服务,更加的受益与你我,谢谢。原创 2023-08-31 20:14:03 · 2407 阅读 · 0 评论 -
你不了解的Dictionary和ConcurrentDictionary
我们平时使用的Dictionary很多,但是你真的对它的使用很了解吗》还是说你只会往里面添加和读取数据,考虑过线程安全性问题吗?与ConcurrentDictionary对比过相应的性能吗?我想,这些你都没有做过,今天我帮你们做了,希望你们点开看一看,或许有不一样的收获,也让我能够得到你们的反馈,让我自己知道我不知道的地方,大家一起学习改正。原创 2023-08-10 21:08:36 · 877 阅读 · 0 评论 -
C#中,System.ComponentModel.Container详解
编写WinForm时,经常会碰到Container类,在这里对它进行详细总结,希望对大家有所帮助。原创 2023-04-05 21:49:13 · 2287 阅读 · 0 评论 -
C#中,FTP同步或异步读取大量文件
FTP同步和异步读取大量文件内容的方法原创 2023-03-03 20:31:14 · 3032 阅读 · 0 评论 -
C#中,读取一个或多个文件内容的方法
快速读取多个文件内容的方法原创 2023-03-03 20:04:45 · 4405 阅读 · 0 评论 -
C#中,IntPtr详解
IntPtr的使用详解原创 2023-03-02 23:09:52 · 4734 阅读 · 0 评论 -
C#中,unsafe和unmanaged的区别
unasfe关键字与unmanaged的区别原创 2023-03-02 22:42:06 · 796 阅读 · 0 评论 -
C#中,使用Process调用外部exe(或进程)时,调用一次之后,再次执行时无反应
C# 调用外部应用程序时遇到的坑,执行一次,再次执行时没有反应,也不报错原创 2022-09-23 19:07:17 · 1205 阅读 · 0 评论 -
反射获取DLL中的字段、属性、方法、泛型方法(C#)
反射获取DLL文件中的属性、字段、方法、泛型方法、对象实例创建等。特别是在泛型方法中,经常或碰到加载不到方法、类型不匹配等。原创 2022-08-07 15:07:34 · 1264 阅读 · 0 评论 -
索引器的详细讲解(C#)
索引器与属性很类似。索引器的创建与属性创建所使用的编程语言特性是一样的。索引器使属性被索引:使用一个或多个参数引用的属性,这些参数为某些值集合提供索引。索引器语法可以通过变量名和方括号访问索引器。将索引器参数放入方括号内:var item = SomeObject["key"];SomeObject["keyOther"] = item;使用this关键字作为属性名声明索引器,并在方括号内声明参数:public int this[string Key] {原创 2022-03-28 21:13:18 · 4193 阅读 · 1 评论 -
Lambda表达式详解(C#)
Lambda表达式可以采用以下任意一种形式的表达式:1.表达式Lambda,表达式为其主体:(input-parameters) => expression2.语句Lambda,语句块作为其主体:(input-parameters) => {<sequence-of-statements>}使用Lambda声明运算符=>,从其主体中分离Lambda参数列表。若要创建Lambda表达式,需要在Lambda运算符左侧指定输入参数(如果有参数时),然后在另一侧输入表达式原创 2022-03-22 21:19:07 · 23569 阅读 · 2 评论 -
Windows句柄和.NET之间的关系
1.什么是句柄?在Windows编程中,应用程序需要访问各种资源,如文件、网络、窗口、图标以及线程等。这些不同类型的资源被系统封装成不同的数据结构,当需要使用这些资源时,程序会根据这些数据结构创建出不同的对象,当操作完毕且不在需要这些对象时,程序应当及时对这些对象进行释放。通常在进行.NET编程时,在得益于有效的内存管理机制,对象的创建和使用比较方便,无须关心对象的创建和内存的分配细节,当不在使用对象时,垃圾回收器会进行回收。由于.NET类库对系统底层对象进行了封装,不在需要调用Windows API对原创 2022-01-27 23:14:48 · 510 阅读 · 0 评论 -
Invoke和BeginInvoke的详细理解(C#)
在项目中,当使用Winform(基于.NET Framework)构建程序的GUI界面时,若以TextBox为列,要在其它线程中更新控件的界面显示,初学者往往是使用:this.textBox.Text = "10";当这样使用时,在程序员运行后可能会使程序触发“不能从不是创建该控件的线程中调用它”的异常信息。造成这种异常的原因在于,窗体控件是在主线程中创建的(比如this.Controls.Add(控件的组件对象)),当更新控件的界面显示时,是在其它线程,并不是在主线程中进行。当在其它线程中更新控件的原创 2022-01-16 20:52:33 · 1441 阅读 · 0 评论 -
事件(C#)
类或者对象可以通过事件向其它类或者对象通知发生相关的事情。 事件的属性特征:1.发行者确定何时引发事件;订户确定对事件做出何种响应。2.一个事件可以拥有多个订户;订户可以处理来自多个发行者的多个事件。3.没有订户的事件永远也不会引发。4.事件通常表示用户的操作,例如单击按钮或者图形用户界面中的菜单栏选项。5.当事件具有多个订户时,引发事件时会同步调用事件处理程序。6. 在.Net Framework类库中,事件基于EventHandler委托和EventArgs基类。...原创 2022-01-09 20:31:12 · 346 阅读 · 1 评论 -
as操作符(C#)
as运算符的介绍原创 2022-01-09 17:23:32 · 997 阅读 · 1 评论 -
什么是COM组件以及怎样创建(C#)?
什么是COM组件? 1.COM组件是以WIN32动态链接库(DLL)或可执行文件(EXE)形式发布的可执行代码组成。 2.COM组件是一些小的二进制可执行文件,必须以二进制的形式发布。 3.COM组件可以给应用程序、操作系统以及其它组件提供服务。 4.自定义的COM组件可以在运行时刻同其它组件连接起来构成某个应用程序。 5.COM组件必须是动态链接的。使用COM组件需要注意:1.必须要保证升级应用时不破坏与以前版本...原创 2022-01-06 23:08:47 · 7531 阅读 · 0 评论 -
图像任意角度旋转和翻转(C#)
原图旋转5°(虚化部分做了渐变处理)旋转-5°(虚化部分做了渐变处理)旋转270°(虚化部分做了渐变处理)Cv2.Flip为图像的垂直翻转和水平翻转Cv2.Flip(srcImg, vImg, FlipMode.X);垂直翻转效果图如图所示Cv2.Flip(srcImg, hImg, FlipMode.Y);水平翻转效果图如图所示任意角度旋转源代码private Mat ImgRotate(Mat img, int angle) {原创 2021-12-22 11:03:59 · 1549 阅读 · 5 评论 -
数组中心下表的寻找(C、C#实现)
通过C语言实现int pivotIndex(int* nums, int numsSize){ int sum=0, index = 0; //求取数组之和 for(int i = 0; i < numsSize; ++i) { sum += nums[i]; } for(int i = 0; i < numsSize; ++i) { if(2 * index + nums[i] == sum)原创 2021-09-13 13:01:45 · 137 阅读 · 0 评论 -
C#中调用Python脚本文件以及遇到的坑
Python对于数据分析和机器学习是非常的有优势,最近项目中遇到一个问题,需要通过在C#中调用Python脚本文件来处理数据,这里我使用C#中的System.Diagnostics.Process调用Python的脚本文件。private void runPythonCmd() { using(Process p = new Process()) { p.StartInfo.FileName = @"C:\Python_Code\Test原创 2021-09-07 22:52:43 · 1354 阅读 · 1 评论 -
C# 进制之间转换(二进制、十进制、十六进制)
二进制数在C#中不能直接表示,且所有的二进制数都是以字符串进行表示。如:二进制11011111,表示字符串为:“11011111”。二进制转十进制Console.WriteLine($"DF={Convert.ToInt32("11011111", 2)}");十进制转二进制Console.WriteLine($"DF={Convert.ToString(223, 2)}");十六进制转二进制Console.WriteLine($"DF={Convert.ToString(0XDF, 2)}原创 2021-08-11 16:44:51 · 4226 阅读 · 1 评论 -
C# 委托与事件的区别
1.什么是委托?委托可以把一个方法代入另一个方法,相当于指向函数的指针,换句话说,委托相当于一个函数指针,而事件就相当于保存委托的数组。总的来说,委托是一个类,该类内部维护着一个字段,指向一个方法。委托的声明:public delegate void DoDelegate();通过委托执行方法namespace ConsoleAppCSharp{ class Program { static void Main(string[] args) {原创 2021-08-09 23:53:12 · 11490 阅读 · 1 评论 -
C# 资源文件Resource.resx的使用
1.添加资源文件在C#工程文件中右击->属性,打开界面如下图所示,然后选中资源选项,将需要的图片、文件等复制进来,并保存。打开工程文件下Properties,然后再打开Resources.resx,并双击Resources.Designer.cs在Resources下可以看到生成如下的代码:/// <summary> /// 查找 System.Drawing.Bitmap 类型的本地化资源。 /// </summary>原创 2021-08-08 09:23:00 · 9339 阅读 · 0 评论 -
图像清晰度评价(C#)
**图像清晰度评价(C#)**在空域中,图像领域对比度即为相邻像素间的灰度特征的像素差。在频域中,图像频域分量,对焦清晰的图像高频分量多,对焦模糊的图像低频分量多。图像清晰评价通常使用三种算法:Tenengrad梯度方法、Laplacian梯度方法和方差方法。本例通过OpenCVSharp实现Tenengrad梯度方法Tenengrad利用Sobel算子分别计算水平和垂直方向的梯度,同一图像中,梯度值越高,图像越清晰。以下通过C#实现,通过Sobel算子处理后的得到平均灰度值,灰度值越大,图像转载 2021-08-02 11:10:21 · 2723 阅读 · 0 评论