[c#]async和await刨根问底-编程思维

上一篇随笔留下了几个问题没能解决:· 调用IAsyncStateMachine.MoveNext方法的线程何时发起的?· lambda的执行为何先于MoveNext方法?· 后执行的MoveNext方法做了些什么事情? 那么今天就来尝试解决它们吧~PS: 本文中部分代码来自上一篇随笔,具体来源可参考注释中的章节标题 一、哪里来的线程? 通过上一篇随笔的调查我们知道了,async标记的方法的方法体

[c#]浅析ref、out参数-编程思维

按引用传递的参数算是C#与很多其他语言相比的一大特色,想要深入理解这一概念应该说不是一件容易的事,再把值类型和引用类型给参杂进来的话就变得更加让人头晕了。经常看到有人把按引用传递和引用类型混为一谈,让我有点不吐不快。再加上前两天碰到的一个有意思的问题,让我更加觉得应该整理整理关于ref和out的内容了。 一、什么是按引用传递 ref和out用起来还是非常简单的,就是在普通的按值传递的参数前加个r

[c#]6.0新特性浅谈-编程思维

C#6.0出来也有很长一段时间了,虽然新的特性和语法趋于稳定,但是对于大多数程序猿来说,想在工作中用上C#6.0估计还得等上不短的一段时间。所以现在再来聊一聊新版本带来的新特性可能也还不算晚吧? 一、nameof关键字 这绝对是整个新版本最让我期待的内容,它给代码重构带来了巨大的便利。先来看一下它是怎么使用的吧: string s; Console.WriteLine(nameof(s));

[c#]ini文件控制类-编程思维

INI文件常用于保存各类设置或本地化文本,大概格式如下: [Section] key=value 然而.NET框架似乎并没有提供一个实用的工具来操作它,或许是因为MS想让我们都使用Settings类控制的config文件?但是出于多种原因,我还是不太喜欢用Settings类以及这个XML格式的config文件。 幸运的是,有两个Win32API可以帮我们完成INI文件的控制:WritePri

[c#]简单离线注册码生成与验证-编程思维

本文使用RSA非对称加密和Base64简单地实现离线注册码的生成与验证功能。 主要思路就是提供者持有密钥,通过RSA加密客户机标识或时间标识,再通过Base64加密成不太难看的注册码,然后分发给客户机。客户机解Base64后,通过持有的公钥来验证注册码是否与本机标识或时间标识相符。 一、生成公密钥 RSACryptoServiceProvider cryptor = new RSACrypto

excel c# 聚光灯-编程思维

C# EXCEL版本聚光灯,开发框架利用EXCELDNA 开源库 public static class Extension { static Application _xlapp = (Application)ExcelDnaUtil.Application; static AppEvents_Event AppEvents = (AppEvents_E

【openvino™】在 macos 上使用 openvino™ c# api 部署 yolov5-编程思维

在 MacOS 上使用 OpenVINO™ C# API 部署 Yolov5 项目介绍 YOLOv5 是革命性的 "单阶段"对象检测模型的第五次迭代,旨在实时提供高速、高精度的结果,是世界上最受欢迎的视觉人工智能模型,代表了Ultralytics对未来视觉人工智能方法的开源研究,融合了数千小时研发中积累的经验教训和最佳实践。同时官方发布的模型已经支

【openvino™】在 windows 上使用 openvino™ c# api 部署 yolov8-obb 实现任意方向的目标检测-编程思维

 前言 Ultralytics YOLOv8 基于深度学习和计算机视觉领域的尖端技术,在速度和准确性方面具有无与伦比的性能。其流线型设计使其适用于各种应用,并可轻松适应从边缘设备到云 API 等不同硬件平台。YOLOv8 OBB 模型是YOLOv8系列模型最新推出的任意方向的目标检测模型,可以检测任意方向的对象,大大提高了物体检测的精度。同时官方发布的模型已经支持 OpenVINO™ 部署

.net nativeaot 指南-编程思维

.NET NativeAOT 指南 随着 .NET 8 的发布,一种新的“时尚”应用模型 NativeAOT 开始在各种真实世界的应用中广泛使用。 除了对 NativeAOT 工具链的基本使用外,“NativeAOT”一词还带有原生世界的所有限制,因此您必须知道如何处理这些问题才能正确使用它。 在这篇博客中,我将讨论它们。 基本用法 使用 NativeAOT 非常简单,只需要在发布应用时使用 M

【opencv】在linux上使用opencvsharp-编程思维

前言 OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,它具有C++,Python,Java和MATLAB接口,并支持Windows,Linux,Android和Mac OS。OpenCvSharp是一个OpenCV的 .Net wrapper,应用最新的OpenCV库开发,使用习惯比EmguCV更接近原始的OpenCV,该库采用LGPL发行,对商业应

c# 如何获取系统管理员权限(uac) 及判断当前是否是管理员权限-编程思维

环境说明: VS2012,windows 7  亲自验证过win7 和xp ,XP直接不弹框,因为XP没有UAC控制机制 步骤1: 右键项目--》属性--》安全性--》选中【启用ClickOnce安全设置】 此时在我们的项目下Properties目录下多了个叫 app.manifest  的文件   步骤2: 文件里面的代码如下,我们只需要将以下这句更改了即可 <requestedExec

c# 如何更改 webbrowser所加载的 html元素(隐藏滚动条),并按照修改后的来呈现-编程思维

如何更改 WebBrowser所加载的 HTML元素 方法1:在网页加载完毕后的事件里面添加代码,我这里只是修改网页不出现滚动条,因为滚动条我重写了。   1 #region (private) 网页加载完成后执行回调的函数 2 3 /// <summary> 4 /// 网页加载完成后执行回调的函数,在这初始化滚动条的参数 5

c# 继承、多态性、抽象和接口详解:从入门到精通-编程思维

C# 继承 在 C# 中,可以将字段和方法从一个类继承到另一个类。我们将“继承概念”分为两类: 派生类(子类) - 从另一个类继承的类 基类(父类) - 被继承的类 要从一个类继承,使用 : 符号。 在以下示例中,Car 类(子类)继承了 Vehicle 类(父类)的字段和方法: 示例 class Vehicle // 基类(父类) { public string brand = "F

深入理解 c# 编程:枚举、文件处理、异常处理和数字相加-编程思维

C# 枚举 枚举是一个特殊的“类”,表示一组常量(不可更改/只读变量)。 要创建枚举,请使用 enum 关键字(而不是 class 或 interface),并用逗号分隔枚举项: enum Level { Low, Medium, High } 您可以使用点语法访问枚举项: Level myVar = Level.Medium; Console.WriteLine(myVar);

c#-编程思维

将HTML转换为PDF可实现格式保留、可靠打印、文档归档等多种用途,满足不同领域和情境下的需求。本文将通过以下两个示例,演示如何使用第三方库Spire.PDF for .NET和QT插件在C# 中将Html 网页(URL)或HTML字符串转为PDF文件。   HTML转PDF所需工具: 1. Spire.PDF for .NET 首先需要安装Spire.PDF for .NET到你的项目中,可以

c# 面向对象编程解析:优势、类和对象、类成员详解-编程思维

C# - 什么是面向对象编程? OOP代表面向对象编程。 过程式编程涉及编写执行数据操作的过程或方法,而面向对象编程涉及创建包含数据和方法的对象。 面向对象编程相对于过程式编程具有几个优势: OOP执行速度更快,更容易执行 OOP为程序提供了清晰的结构 OOP有助于保持C#代码DRY("不要重复自己"),并使代码更易于维护、修改和调试 OOP使得能够创建完全可重用的应用程序,编写更少的代码并减

c# 面向对象编程进阶:构造函数详解与访问修饰符应用-编程思维

C# 构造函数 构造函数是一种特殊的方法,用于初始化对象。构造函数的优势在于,在创建类的对象时调用它。它可以用于为字段设置初始值: 示例 获取您自己的 C# 服务器 创建一个构造函数: // 创建一个 Car 类 class Car { public string model; // 创建一个字段 // 为 Car 类创建一个类构造函数 public Car() {