![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C#
文章平均质量分 54
破浪征程
我走过山时,山不说话
我路过海时,海不说话
小毛驴滴滴答答
倚天剑伴我走天涯。
大家都说我因为爱着杨过大侠
才在峨嵋山上出了家
其实我只是爱上了峨嵋山上的云和霞
像极了十六岁那年的烟花
展开
-
.Net 知识杂记
首次创建项目时,建议创建 .NET Standard 类库,因为它提供了与最广泛使用项目的兼容性。使用 .NET Standard 可以默认向 .NET 库添加跨平台支持。但是,在某些情况下,可能还需要包含针对特定框架的代码。我们创建C#应用程序时,在项目的工程文件(*.csproj)中都有targetFramework标签,以表示项目使用的目标框架。对于 SDK 样式的项目,可以在项目文件中配置对多个目标框架(TFM)的支持,然后使用。如果你有任何仅在一个 TFM 中工作的代码,则可以使用。原创 2024-03-29 19:33:46 · 1281 阅读 · 0 评论 -
LINQ学习记录
如果源序列中存在元素通过了指定谓词中的测试,则为。如果源序列中的每个元素都通过指定谓词中的测试,如果源序列包含任何元素,则为。原创 2024-03-27 20:12:06 · 218 阅读 · 0 评论 -
.net 8 使用学习小记
这个实现使用了双重检查锁定(double-checked locking),以确保在多线程环境下也能高效安全地创建单例。是为了避免在单例已经被创建后的每次调用中都进行锁定,而内部的检查则确保了即使在多线程情况下只有一个实例被创建。使用代码优化(复合分配)原创 2024-03-20 19:57:08 · 405 阅读 · 0 评论 -
C# 中的接口
在C#中使用interface关键字来定义接口,例如。原创 2024-01-26 14:43:29 · 611 阅读 · 0 评论 -
关于C#中的HashSet<T>与List<T>
表示可通过索引访问的对象的强类型列表。元素可重复,是有序列表,根据调用add的时间先后进行排序。例如有100个元素,删除掉下标99的元素后,无法再通过下标99访问数据。HashSet存储数据时将数据通过散列函数直接映射到地址,所有取值时可以直接取到,时间复杂度为O(1)。List检索时需要一个个的进行值比较,最多需要比较到数组末尾,时间复杂度为O(n),n为元素个数。这个集合的元素是无须列表,同时元素不能重复。当数据量较小时,list的增加删除性能有优势,当数据量较大,则hashset的性能有巨大优势。原创 2024-01-23 18:28:48 · 696 阅读 · 0 评论 -
关于C#中的Select与SelectMany方法
这里的a就是petOwner集合本身,b就是a.Pets生成的新的集合。将序列中的每个元素投影到新表单。并将结果序列合并为一个序列。将序列的每个元素投影到。原创 2024-01-19 15:37:13 · 1410 阅读 · 0 评论 -
关于C#中的LINQ的延迟执行
Linq中的绝大多数查询运算符都有延迟执行的特性,查询并不是在查询创建的时候执行,而是在遍历的时候执行运行结果:可以看到,执行结果也验证上述的说明,查询创建后,并没有马上执行,而是在遍历对象时才执行,否则第二个遍历不会打印出40.如果在查询后面添加ToList等转换符,则会立即执行,如。原创 2024-01-19 12:21:23 · 608 阅读 · 2 评论 -
关于C#中Monitor的wait/pulse的理解
首先线程A通过wait方法释放锁,让线程B获取锁后成功开始执行,线程A进入等待队列,线程B执行过程中不再需要锁定对象后,则会调用pulse发送释放锁的信号,让收到信号的线程A从等待队列进入就绪队列,当线程B执行完成释放锁后,线程A重新获得锁,继续执行。可以看到在线程B中发出Pulse信号后,线程A收到信号,进入就绪队列,此时线程B还没有释放锁,直到线程完成3s等待后,线程A才重新获取锁,wait(object)才返回。说明1:这里我们在线程B中,并没有发出pulse信号,线程也没有无限期等待。原创 2024-01-16 15:46:53 · 580 阅读 · 0 评论 -
关于C#中的async/await的理解
在大多数情况下,异步操作并不会创建新的线程,而是通过利用I/O完成端口或其他异步机制来实现异步操作。这样可以避免创建额外的线程,提高程序的性能和资源利用率。1. 使用async标记的方法被认为是一个异步方法,如果不使用await关键字,调用跟普通方法没有区别。当被await的异步操作完成后,异步方法会恢复执行,并返回结果。3.使用task.result获取执行结果,会阻塞调用线程。异步方法会暂时挂起,让出当前线程的控制权,而不会阻塞线程。2.当使用await关键字时,原创 2024-01-16 11:26:54 · 538 阅读 · 0 评论 -
C# 使用HttpClient 上传文件
【代码】C# 使用HttpClient 上传文件。原创 2023-10-24 09:28:09 · 938 阅读 · 0 评论 -
Sip协议
SIP协议的简单介绍原创 2023-04-07 16:02:04 · 320 阅读 · 0 评论 -
C# 中的abstract和virtual
C# 关键字abstract 和virtual原创 2023-03-06 18:34:13 · 674 阅读 · 0 评论 -
C# 中的ArrayPool
C# 中的ArrayPool转载 2023-02-22 16:18:56 · 801 阅读 · 0 评论 -
接口的理解
接口的理解转载 2023-02-08 20:25:50 · 85 阅读 · 0 评论 -
关于使用GB28181协议实现与大华摄像机的语音对讲功能小记
使用GB28181协议对接大华摄像机,实现语音对讲功能原创 2022-11-11 19:03:15 · 3731 阅读 · 0 评论 -
C# 中的dataGridView控件动态添加自定义列,并绑定数据源
C# DataGridView 控件使用原创 2022-09-20 20:48:11 · 7702 阅读 · 0 评论 -
C# 对字符串判空方法
C# 判断字符串为空原创 2022-09-09 15:59:57 · 491 阅读 · 0 评论 -
C# 使用cefsharp点播m3u8在线视频流
winform程序加载网页点播视频流原创 2022-09-08 17:00:50 · 2711 阅读 · 0 评论 -
.Net Newtonsoft.Json 转json时将枚举转为字符串
json 格式化转载 2022-09-05 11:46:40 · 587 阅读 · 0 评论 -
C#使用Marshal.SizeOf计算结构体大小返回错误
字节对齐原创 2022-07-14 14:46:25 · 1030 阅读 · 0 评论 -
.NET 6 顶级语句小记
原创 2022-05-19 20:51:46 · 578 阅读 · 0 评论 -
使用vs2022将数据库表生成c#实体类
首先通过NuGet安装下面两个依赖:Microsoft.EntityFrameworkCore.ToolsPomelo.EntityFrameworkCore.MySql注意选择好版本,最新的6以上的版本需要.net 6.0第二步,在nuget控制台上执行命令生成实体类scaffold-dbcontext -provider Pomelo.EntityFrameworkCore.MySql -connection "Server=192.168.1.20;port=3306;D..原创 2022-05-09 16:06:26 · 2788 阅读 · 0 评论 -
c# await and async 模式死锁问题
小心C# 5.0 中的await and async模式造成的死锁 - PowerCoder - 博客园 (cnblogs.com)转载 2022-05-06 20:18:22 · 253 阅读 · 0 评论 -
.Net Core使用serilog的小记
.Net Core使用serilog的小记原创 2022-04-24 15:28:35 · 2412 阅读 · 0 评论 -
.net 程序部署到centos 7上运行
打开配置文件 appsettings.json,将日志文件保存路径中的 \ 改为 /,这是因为 Windows 中使用反斜杠 \ 来表示目录,而 Linux 中使用正斜杠 / 来表示目录。发布程序dotnet publish -c Release -r linux-x64 -o c:\test\linux将文件夹 C:\test\linux 下的文件压缩为 linux.zip。打开 Xshell 工具,连接到一台 Linux 测试机(我的测试机操作系统为 CentOS 7.3)..转载 2022-03-28 20:02:47 · 1317 阅读 · 0 评论 -
.net 与.net core 与.net framework与.net standard之间的关系理解
最近在做C#程序的跨平台的东西,所有仔细研究了下这几个常常弄混的东西。.net是一个用于开发的平台。官方的说法是:免费的。跨平台的。开源的。一个开发者平台来构建你所有的应用程序。.net core是适用于 Windows、Linux 和 macOS 的免费、开源托管的计算机软件框架,是微软开发的第一个官方版本,具有跨平台能力的应用程序开发框架 (Application Framework)。.net framework主要是基于windows平台开发的框架。.NET Standard 是原创 2022-03-27 19:07:13 · 5475 阅读 · 0 评论 -
C# byte[]数组的读取和写入文件
C# byte[]数组的读取和写入文件转载 2022-02-25 01:05:28 · 7156 阅读 · 0 评论 -
【转载】C#操作Word的超详细总结
C#操作Word的超详细总结本文中用C#来操作Word,包括:创建Word;插入文字,选择文字,编辑文字的字号、粗细、颜色、下划线等;设置段落的首行缩进、行距;设置页面页边距和纸张大小;设置页眉、页码;插入图片,设置图片宽高以及给图片添加标题;插入表格,格式化表格,往表格中插入数据;保存Word,打印Word;重新打开Word等。Visual studio版本:Visual Studio 2012(2010应该也可以)准备工作:/*1...转载 2021-04-06 16:55:14 · 2076 阅读 · 1 评论 -
The type or namespace name ‘****‘ could not be found (are you missing a using directive or an assemb
引用的类库目标框架不能大于当前项目的目标框架,修改一致后即可正确编译参考文章:https://blog.csdn.net/weixin_34254823/article/details/90098028原创 2021-02-23 17:08:56 · 9948 阅读 · 0 评论 -
使用C#将RGB24转换为YUV420格式
最近使用阿里云推送本地视频数据到远端播放!需要将图像数据转换为YUV420格式的,网上大部分是C++写的,这里将代码转换为C#格式,记录如下!1.原料准备!首先我们获得RGB原始数据,这里不能使用JPG等压缩格式图片,需要先将图片转换为RGB格式的裸数据保存!这里提供一个网站 ,可以做转换!https://convertio.co/zh/2.转码:使用下面的代码即可转换为YUV420!有需要的同学可以试试看! FileStream fs = new FileStream("./test.rgb原创 2021-02-04 17:11:54 · 1176 阅读 · 0 评论 -
关于C#中的接口和抽象类的知识点小记
1.抽象类不能被实例化2.类继承接口必须提供实现C#虚基类继承与接口的区别类 定义新的数据类型以及这些新的数据类型进行相互操作的方法 定义方式: class Cat { // .......... } class Cat : object { // .......... }C#中所有的类都是默认由object类派生来的,显示指定或者省略效果是一样的,所以上面的两个例子是完全相同的。 C#中类包括:抽象类、密封类、非抽象类 abstract转载 2021-01-28 11:42:46 · 162 阅读 · 0 评论 -
C#使用libVLC制作视频播放器时自定义鼠标事件的捕获或者忽略
由于项目之前使用libVLC制作的播放器没有全屏功能,现在需要添加全屏功能。而实现全屏功能后需要控件捕获鼠标消息。不做处理的话,鼠标消息会被vlc捕获!这里就需要VLC忽略掉鼠标消息!所以,需在创建完媒体播放器后,调用 libvlc_video_set_key_input() 和 libvlc_video_set_mouse_input() 即可,这样 libVLC 就可以忽略键盘和鼠标事件了:private libvlc_media_player_t Create_MediaPlayer(li原创 2020-12-28 12:09:05 · 1216 阅读 · 3 评论 -
缩放时使用插值模式控制图像质量
Graphics 对象的插值模式会影响 GDI+ 缩放(拉伸和收缩)图像的方式。 InterpolationMode 枚举定义了几种插值模式,其中一些模式显示在下面的列表中: NearestNeighbor Bilinear HighQualityBilinear Bicubic HighQualityBicubic 若要拉伸图像,原始图像中的每个像素都必须映射为较大图像中的一组像素。 若要收缩图像,必须将原始图像中成组的像素映射为较小图像中单个的像素。 执原创 2020-12-09 11:35:02 · 931 阅读 · 0 评论 -
C# 创建大图的缩略图
缩略图像是图像的小版本。 可通过调用 Image 对象的 GetThumbnailImage 方法创建缩略图像。下面的示例从 JPG 文件构造 Image 对象。 原始图像的宽度为 640 像素,高度为 479 像素。 该代码创建宽度和高度均为 100 像素的缩略图像。下面的插图显示此缩略图像。public bool ThumbnailCallback() { return true; } private void GetTh.原创 2020-12-09 11:32:48 · 341 阅读 · 0 评论 -
C#中使用DrawImage避免自动缩放改善性能
在绘制图片时,当我将四张小图贴在一张大图的四个角时,当我使用drawimage(Image,point)绘制时,发现图片被放大了,当我指定绘制区域后正常了。具体原因如下(参考MSDN):在绘制图像时,GDI+ 可能会自动缩放图像,这将会导致性能降低。 另外,也可以通过将目标矩形的尺寸传递给 DrawImage 方法来控制图像的缩放。例如,以下对 DrawImage 方法的调用指定左上角的位置为 (50, 30),但是未指定目标矩形。e.Graphics.DrawImage(image, 50.原创 2020-12-09 11:30:39 · 3550 阅读 · 0 评论 -
C#使用GDI根据文字规格绘制基准线
由于根据需求需要绘制4线3格显示字母,所以需要知道字体规格的基线(baseline),这里记录下,下面部分摘录子CSDN:C#获取文字规格的方法在FontFamily类中,对于winform提供以下几个函数: GetEmHeight(FontStyle) GetCellAscent(FontStyle) GetCellDescent(FontStyle) GetLineSpacing(FontStyle) 这些方法返回的数字使用的是字体设计单位,因此,它们与特定的原创 2020-12-08 16:21:57 · 616 阅读 · 1 评论 -
c#中字符串显示上标和下标解决办法
由于工作的需求,需要在word中插入带入带有上标和下标的字符串,比如这样的一个字符串:SO₄²⁻(mg/L)。在网上搜了好久,终是摸索出点思路。 解决办法:使用转义字符加Unicode的HexEntity就可以实现了。比如定义一个SO₄²⁻(mg/L)这样的字符串如下:"SO\x2084\x00B2\x207B(mg/L)"。其中x2084为₄(注意:此处为4的下标) 的UnicodeHexEntity,x00B2为²(注意:此处为2的上标) 的UnicodeHexEntity,x...转载 2020-10-22 11:14:20 · 2774 阅读 · 0 评论 -
Lambda表达式select()和where()的区别
新建一个控制台程序ConsoleApplication11、where()用法:必须加条件,且返回对象结果。 static void Main(string[] args) { string[] arrays={"asd","abc","bbb","ccc"}; var results = arrays.Where(a=>a.Contains("b"));//必须加条件,返回对象foreach(var da in results ){ ...转载 2020-10-10 10:15:46 · 1647 阅读 · 0 评论 -
C#使用newtonsoft库修改json串的节点信息
项目中遇到json串不规范的问题,多个相同的key值类型却不一样,导致无法正常实体化,所以需要修改json串,通过官方文档找到了解决方案,记录以下:string json = @"{ 'channel': { 'title': 'Star Wars', 'link': 'http://www.starwars.com', 'description': 'Star Wars blog.', 'obsolete': 'Obsolete value', 'item'.原创 2020-09-16 17:35:59 · 2022 阅读 · 0 评论 -
C#报错“在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke“小结
原因:调用窗体时,注册了事件。关闭调用窗体后,没有注销事件。1.手动注册的事件,需要在窗体关闭时手动释放掉,如下private void QuickResponseForm_Load(object sender, EventArgs e) { //添加事件 label_start.MouseClick += StartQuickAnswer; }private void QuickResponseForm_FormCl...原创 2020-08-26 16:36:15 · 2534 阅读 · 0 评论