学习source generators之helloworld-编程思维

介绍 源生成器是 C# 开发人员可以编写的一种新组件,允许执行两个主要操作: 检索表示正在编译的所有用户代码的编译对象。 可以检查此对象,并且可以编写适用于正在编译的代码的语法和语义模型的代码,就像现在使用分析器一样。 生成可在编译过程中添加到编译对象的 C# 源文件。 也就是说,在编译代码时,可以提供其他源代码作为编译的输入。 结合使用这两项操作能充分发挥源生成器的强大功能。 可以使用编译

.net c#程序启动闪退,在安装或者程序文件下能正常运行,但通过路径却无法运行-编程思维

.NET C#程序启动闪退,目录导致的问题 这是第2次踩这个坑了,很小的编程细节,容易忽略,所以写个博客,分享给大家。 1.第一次坑:是windows 系统把程序运行成服务,找不到配置文件,原因是以服务运行它的工作目录是在C:\Windows\System32 2.本次坑:WPF桌面程序通过注册表设置开机自启,开机启动就闪退 我的排查流程: 1.使用注册表中配置的绝对路径,直接进入该文件夹中双击

在 .net 中使用 opc ua 协议-编程思维

目录什么是 OPC UAUaExpert 的使用下载 UaExpert首次启动添加 OPC UA 服务器连接 OPC UA 服务器查看 PLC 数据使用 C# 读写 OPC UA 数据连接到 OPC UA 服务器获取节点的值写入节点的值 什么是 OPC UA OPC UA(OPC Unified Architecture,开放平台通信统一架构)是 OPC 基金会应用在自动化技术的机器对机器网络传

[c#] .net8增加了arm架构的多寄存器的查表函数(vectortablelookup/vectortablelookupextension)-编程思维

作者: zyl910 发现.NET8增加了Arm架构的多寄存器的查表函数(VectorTableLookup/VectorTableLookupExtension),这给编写SIMD向量化算法带来了方便。 一、指令说明 在学习Arm的AdvSimd(Neon)指令集时,发现它的Lookup(查表)功能,类似X86的Sse系列指令集中的字节Shuffle(换位。如 _mm_shuffle_epi8

使用wcf传输datatable:datatable和xml格式的字符串相互转换(c#)-编程思维

背景:项目中要用到客户端向服务端传数据,使用WCF,绑定webHttpBinding,做了一个小例子。 业务逻辑简介:客户端在a表中添加了几条数据,从SQL Server数据库直接取出新添加的数据(DataTable格式的数据),传递给服务端,服务端有着和客户端相同的数据库结构,将收到的数据也同样添加到自己的a表中。除了添加数据,还有可能进行修改、删除等,并且有几十张表都会依次进行上述操作。客户

c#代码中实现两个表(datatable)的关联查询(join)-编程思维

之前通常都是使用SQL直接从数据库中取出表1和表2关联查询后的数据,只需要用一个JOIN就可以了,非常方便。近日遇到一种情况,两个表中的数据已经取到代码中,需要在代码中将这两个表关联起来,并得到它们横向拼在一起之后的完整数据。 如:表1--商品信息表(dtHead),存放商品的ID和名称,表结构和数据如下:            表2--商品数量及金额表(dtTail),存放商品的数量、金额,

c# socket-编程思维

基本概念 通信约定: Socket可以被看作是一种通信约定或方式,它定义了在网络上两个程序之间进行通信的规则和方法。 四元组: Socket是通过四元组(源IP地址、源端口号、目标IP地址、目标端口号)来唯一标识网络连接的。这四个要素共同构成了一个独特的通信通道。 抽象层: Socket提供了一个抽象层(应用层和传输层之间),使得应用程序在实现网络通信时可以不必直接涉及TCP/IP协议的复杂

c# tcp/udp-编程思维

TCP 简介 TCP(Transmission Control Protocol,传输控制协议)是互联网协议套件中的核心协议之一,通常称为TCP/IP。它提供了可靠、有序和经过错误检查的数据流传输,在运行在IP网络上的主机之间的应用程序之间进行通信。TCP确保数据包以完整、顺序和无错误的方式传送。它通过使用确认和重传机制、流量控制和拥塞控制来实现这一点。 以下是TCP的一些关键特性: 面向

c# parallel-编程思维

简介 C#中的Parallel类提供了一种简化并行编程的方式,它使得在多核处理器上执行并行任务变得更加容易。Parallel类允许开发人员并行执行一系列操作,而无需手动管理线程或任务分配。 任务分区:Parallel 类会根据可用的处理器核心数量自动将任务分配给多个线程。任务分区的方式取决于系统的硬件配置和当前的线程池状态。 线程池:Parallel 类使用线程池来管理并发执行的线程。线程池

c# async/await-编程思维

关键术语 异步编程模型 异步编程是指在执行长时间运行的操作时,允许程序继续执行其他任务而不必等待该操作完成。在传统的同步编程中,当一个操作进行时,程序会一直等待直到它完成,这可能会导致阻塞并降低程序的响应性。 异步编程模型通过使用异步方法来执行这些长时间运行的操作,允许程序在等待操作完成的同时执行其他任务。 async/await关键字 async关键字用于定义异步方法,这些方法可以

c# thread、threadtool、task-编程思维

Tread 在 C# 中,Thread 类是用于创建和管理线程的基本类之一。线程是程序中执行的基本单元,它允许程序在多个任务之间并发执行,从而提高程序的性能和响应能力。下面是关于 Thread 类的一些深入解析: 创建线程 可以使用 Thread 类的构造函数创建新的线程,并将要执行的方法作为参数传递给线程。方法可以是一个委托,也可以是一个 Lambda 表达式。例如: Thread th

c# 程序集-编程思维

程序集 在C#中,程序集是一种将一个或多个文件组合在一起的单元,它是.NET应用程序的基本部署单元。程序集可以包含编译后的IL代码、资源文件、元数据以及其他与应用程序相关的内容。以下是关于C#程序集的一些重要概念: 单文件程序集: 单文件程序集是指将所有的代码和资源都打包到一个文件中的程序集。这种类型的程序集在部署时非常方便,因为只需要一个文件即可。 多文件程序集: 多文件程序集允许将一

c# 异常类(exception)-编程思维

一、介绍 在 C# 中,异常处理是一种机制,用于在程序执行过程中检测和响应错误或异常情况。异常是指在程序执行期间发生的意外或不可预测的事件,这些事件可能会干扰程序的正常流程。 异常处理的主要目标是: 检测异常:当发生错误或异常情况时,C# 运行时会抛出一个异常对象。这个对象包含有关异常的信息,如异常类型、异常消息以及导致异常的源代码位置。 处理异常:程序员可以编写代码来处理异常,以确保程序

c# 反射-编程思维

简介 C# 反射是一种强大的技术,它允许在运行时获取和操作程序集、类型和成员的信息,而无需在编译时知道这些信息。通过反射,开发人员可以在程序执行期间动态加载、探索和使用类型,并调用其成员。这种机制使得 C# 程序能够具有更高的灵活性和可扩展性,适用于各种场景,如插件式架构、ORM 框架、代码生成等。 原理 C# 反射的核心在于 .NET Framework 提供的 System.Reflecti

c# 内存管理和指针-编程思维

在C#中,内存管理和指针操作相比于C或C++等语言来说更加受限,因为C#是一种托管语言,具有自动内存管理的特性。以下是关于C#内存管理和指针的一些基本概念: 一、内存管理 (一) 垃圾回收 (Garbage Collection) C# 中的垃圾回收(Garbage Collection,GC)是一种自动内存管理机制,它负责在程序运行时识别和释放不再使用的内存资源,从而减少内存泄漏和提高应用程

c# 动态语言扩展-编程思维

一、动态语言运行时 在C#中,通常不会像Python或JavaScript等动态语言那样在运行时执行代码。C#是一种静态类型语言,其代码在编译时就已经被转换成中间语言(IL),然后在运行时由.NET运行时(CLR)执行。这意味着C#代码的类型检查发生在编译时,而不是在运行时。 尽管如此,C#也提供了一些动态编程的功能,其中包括: 动态类型(dynamic):C# 4.0引入了动态类型,通过

c# .net 和 com-编程思维

一、COM 简介: COM(Component Object Model)是微软提出的一种面向对象的组件技术,它定义了一组标准,用于组件之间的交互和通信。COM组件可以是二进制的可执行文件(如DLL、EXE)或者是系统内核对象。 原理: COM组件通过接口暴露其功能,客户端可以通过调用接口中的方法来访问组件提供的功能。COM组件之间可以通过接口进行通信,从而实现组件的组合和重用。 应用场景:

c# 语言集成查询-编程思维

一、LINQ 概述 C# Language Integrated Query (LINQ) 是一种强大的查询语言,它允许在.NET语言(如C#)中编写结构化的查询。它为开发人员提供了一种统一的方式来查询各种数据源,包括对象集合、数据库、XML和其他数据源。 LINQ 的主要目标是提供一种统一的查询语法,无论数据存储在何处,都可以使用相同的查询语法进行访问。它的一些关键概念包括: 查询表达式

c# 集合-编程思维

一、集合接口和类型 (一) 集合接口: IEnumerable<T>: IEnumerable<T> 是用于表示一组元素的通用接口,它定义了一个方法 GetEnumerator(),该方法返回一个枚举器,用于遍历集合中的元素。 ICollection<T>: ICollection<T> 接口扩展了 IEnumerable<T>,并

c# 字符串和正则表达式-编程思维

一、字符串 在C#中,字符串是一种非常基础且常用的数据类型,提供了丰富的功能和方法来处理和操作字符串。字符串是引用类型,但它们的特殊性使得它们在某些情况下表现得更像值类型。 (一) 字符串是引用类型 字符串在 C# 中被定义为 string 类型,它是 .NET 框架中的一个类,它是引用类型。这意味着当你创建一个字符串变量时,实际上是在堆内存中分配了一块内存来存储字符串的内容,并且该变量存储的