![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C#
文章平均质量分 50
IT技术猿猴
这个作者很懒,什么都没留下…
展开
-
C#如何通过反射获取外部dll的函数
在C#中,你可以使用反射(Reflection)来加载外部的DLL(动态链接库)并获取其中的函数(在C#中通常称为方法)。但是,请注意,反射主要用于访问类型信息,并且对于非托管代码(如C/C++编写的DLL)中的函数,你通常需要P/Invoke(平台调用服务)或C++/CLI包装器。请注意,在使用P/Invoke时,你需要确保C#签名与C/C++函数签名兼容,并且你还需要处理任何可能的调用约定差异或数据类型不匹配。如果DLL是用C/C++编写的,并且你想调用其中的函数,那么你需要使用P/Invoke。原创 2024-05-14 15:34:16 · 337 阅读 · 1 评论 -
lc.exe已退出 代码为-1 啥意思
意思就是把licenses.licx这个文件里的内容删除,但是文件还在(此时是个空文件),发生这个问题的原因主要是因为你可能引用了第三方控件但没有注册,删完后,重新编译就一切OK了!编译项目,出现提示"Lc.exe已退出,代码为-1"。原创 2024-01-04 09:29:01 · 393 阅读 · 0 评论 -
C#规范整理
其中,值类型字段的值被复制到副本中后,在副本中的修改不会影响到源对象对应的值。而引用类型的字段被复制到副本中的是引用类型的引用,而不是引用的对象,在副本中对引用类型的字段值做修改会影响到源对象本身。由于接口ICloneable只有一个模棱两可的Clone方法,所以,如果要在一个类中同时实现深拷贝和浅拷贝,只能由我们自己实现两个额外的方法,声明为DeepClone和Shallow。不过,无论是对象的值类型字段,还是引用类型字段,都会被重新创建并赋值,对于副本的修改,不会影响到源对象本身。转载 2023-05-17 10:25:00 · 224 阅读 · 1 评论 -
c#退出应用程序办法
/此方法完全奏效,绝对是完全退出。//前面三种方法都不能很好的退出程序,此方法可以完全退出程序,这个要强制得多。//退出当前线程上的消息循环,并关闭该线程上的所有窗口, 也会失灵。原文链接:https://blog.csdn.net/xiaomianfo/article/details/128821561。//好像只在主线程可以起作用,而且当有线程,或是阻塞方法的情况下,很容易失灵。原创 2023-04-11 10:29:43 · 2902 阅读 · 2 评论 -
C#将非模态窗体置顶显示方法
我的理解就是,如果一个 Winform 项目有多个窗体,其中有一个窗体的 TopMost 属性设为 true 了,而其他窗体的 TopMost 未设置为 true,那么 TopMost 属性为 true 的窗体就会显示在其他窗体之上;也就是把 ShowInTaskbar 属性设置为 false,把 TopMost 属性设置为 true,也在 load 方法里用代码指定 TopMost=true,三个条件一起满足的情况下,窗体又可以置顶了。// 设置窗体显示在最上层。// 设置本窗体为活动窗体。原创 2023-02-16 13:40:02 · 846 阅读 · 0 评论 -
C#计算一段代码运行的时间
Console.WriteLine("Stopwatch总共花费{0}ms.", ts2.TotalMilliseconds);Console.WriteLine("QueryPerformanceCounter耗时: {0} 秒", result);Console.WriteLine("DateTime总共花费{0}ms.", ts.TotalMilliseconds);原创 2022-11-12 11:34:44 · 181 阅读 · 0 评论 -
\n和”\n”相互转化
反过来在读取表的时候还是需要再把”\n”字符串转成\n换行符。原创 2022-10-28 15:39:40 · 485 阅读 · 0 评论 -
判断list集合中是否存在相同项
bool isRepeat = msg.listSgl.GroupBy(i => i.SglName).Where(g => g.Count() > 1).Count() > 0;原创 2022-09-24 09:38:48 · 411 阅读 · 0 评论 -
C# visual studio添加NewtonsoftJSON库
打开 工具 -> NuGet管理 -> 程序包管理器控制台。原创 2022-09-14 10:39:59 · 800 阅读 · 0 评论 -
定期清理执行垃圾回收代码
/在程序中用一个计时器,每隔几秒钟调用一次该函数,打开任务管理器,你会有惊奇的发现。#region 内存回收。原创 2022-08-31 09:55:26 · 252 阅读 · 0 评论 -
解决dev GridControl 刷新数据后,滚动条恢复原来位置
string sql = "select * from [A数据分析表]";TopRowIndex事件。原创 2022-08-18 10:09:35 · 249 阅读 · 0 评论 -
DevExpress 使用 GridControl 时,Checklist无法更新的问题
在使用 DevExpress 的 GridControl 为其实现 Checkbox 列,发现如果勾选了三行的数据,在。GridControl 绑定的数据源时 Checkbox 列的数据仅有 2 行被更新。需要手动调用 GridControl 关联 View 的。原创 2022-08-18 09:51:02 · 189 阅读 · 0 评论 -
C# Events类和Event详解
C#中的 event 关键字,它与 System.Threading 名称空间中的 events 类没有关系。event 关键字基于委托,而上述 events 类是 .NET 封装器,用于系统范围内的本机事件资源的同步。通过事件使用委托事件在类中声明且生成,且通过使用同一个类或其他类中的委托与事件处理程序关联。包含事件的类用于发布事件。这被称为 发布器(publisher) 类。其他接受该事件的类被称为 订阅器(subscriber) 类。事件使用 发布-订阅(publisher-subscriber) 模原创 2022-06-01 09:12:53 · 572 阅读 · 2 评论 -
C#链式编程
链式编程,顾名思义 就是一条链子能一直链下去链式编程的原理就是返回一个this对象,就是返回本身,达到链式效果。链式编程能够将多个操作或者多行代码通过点号(.)链接在一起,方便修改和阅读。Linkq语法就是使用的链式编程DataList.Where(e => e.FirstName.StartsWith("C")) .Select(e => e.FirstName) .OrderBy(s =...原创 2022-05-31 08:59:38 · 783 阅读 · 0 评论 -
C# 打印PDF文档的10种方法
哈喽!大家好,我是IT技术猿猴,最爱海贼王💞💞💞是一位爱好技术的【技术宅男】!😜😜😜💞💞💞 如果有对技术感兴趣的宅友,欢迎关注💞💞💞❤️❤️❤️感谢各位❤️❤️❤️————————————————🏳️🌈下面请看本篇文章目录目录🏳️🌈使用默认打印机打印PDF文档📢使用虚拟打印机(Microsoft XPS Document Writer)打印PDF文档📣指定打印机及PDF文档打印页码范围💞静默打印PDF文档🎉双面打印PDF文档🔥黑白打印PDF文档📣..原创 2022-05-29 18:11:49 · 3674 阅读 · 2 评论 -
C# =>实用详解
我们在使用C#编程的时候,经常会用到=>这个符号,但是大家理解过其中的具体用法吗?=>主要有两方面的作用,一个限制属性状态,另一个简化匿名委托和Lambda用法一:定义只读属性public class ManPeople { public string Sex => "男"; public string Name { get; set; }}public class WomanPeople { public string Sex => "女";......原创 2022-05-28 09:29:17 · 25757 阅读 · 5 评论 -
C# BackgroundWorker用法详解(源码可直接使用)
在C#程序中,经常会有一些耗时较长的CPU密集型运算,如果直接在 UI 线程执行这样的运算就会出现UI不响应的问题。解决这类问题的主要途径是使用多线程,启动一个后台线程,把运算操作放在这个后台线程中完成。但是原生接口的线程操作有一些难度,如果要更进一步的去完成线程间的通信就会难上加难。还好 .NET 类库中提供了一个叫做 BackgroundWorker 的类可以比较优雅的解决这类问题。虽然BackgroundWorker 类使用起来比较简单,但其中还是有一些需要注意的细节,下面我们就通过 demo..原创 2022-05-27 09:15:46 · 643 阅读 · 2 评论 -
浅谈事件处理函数中的参数(object sender, EventArgs e)
(object sender, EventArgs e)是C#常见的事件消息参数,这两个参数具体表示什么意思呢? sender是事件源,表示触发事件的那个组件, 如(button/label/listview...),比如说你单击button,那么sender就是button; EventArgs是事件参数,它用来辅助你处理事件,比如说你用鼠标点击窗体,那么EventArgs是会包含点击的位置等等 e是一个类,存事件要用的数据...原创 2022-05-24 11:09:38 · 1470 阅读 · 1 评论 -
禁止winform应用程序重复启动
有些情况下,我们仅希望程序同时存在一个进程,下面是解决办法之一修改"Program.cs"文件 static class Program { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() {原创 2022-05-21 16:54:18 · 596 阅读 · 0 评论 -
一文解决关于各种常见排序算法的所有疑惑(性能-原理-源码-动画演示)
冒泡排序简单选择排序简单插入排序希尔排序计数排序堆排序归并排序快速排序基数排序桶排序冒泡排序时间复杂度:O(n^2)空间复杂度:O(1)最好情况:正序有序时,普通冒泡排序仍是O(n^2),优化后的冒泡排序是O(n)最坏情况:逆序有序时,O(n^2)稳定性:稳定优点:简单,稳定,空间复杂度低缺点:时间复杂度高,效率不好冒泡排序算法的原理如下:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元..原创 2022-05-16 21:57:03 · 501 阅读 · 13 评论 -
蚁群算法详解及其工程源码
目录蚁群算法定义蚁群算法原理蚁群算法基本流程matlab源码:蚁群算法定义蚁群算法(ant colony optimization, ACO),又称蚂蚁算法,是一种用来在图中寻找优化路径的机率型算法。它由Marco Dorigo于1992年在他的博士论文中提出,其灵感来源于蚂蚁在寻找食物过程中发现路径的行为。蚁群算法是一种模拟进化算法,初步的研究表明该算法具有许多优良的性质。针对PID控制器参数优化设计问题,将蚁群算法设计的结果与遗传算法设计的结果进行了...原创 2022-05-15 13:22:03 · 2435 阅读 · 2 评论 -
C#显示和隐藏 Excel 工作表及工作表中的行与列
因为数据的隐私性,我们有时候会不希望显示某个Excel工作表或工作表中的某些数据。该文主要介绍如何隐藏或取消隐藏Excel工作表及工作表中的行与列。显示和隐藏Excel工作表第一部分: 显示和隐藏Excel工作表。我们可以通过设置Visibility的属性来显示或隐藏Excel工作表。//加载Excel文档Workbook workbook = new Workbook();workbook.LoadFromFile("操作.xlsx");//显示第一个工作表workbook.Wor原创 2022-05-14 10:34:35 · 2140 阅读 · 1 评论 -
解决VA出现Files 的值“<<<<<<< .mine”无效。路径中具有非法字符问题
Files 的值“<<<<<<< .mine”无效。路径中具有非法字符。一般出现在svn托管代码的更新与上传过程中导致的!解决方案:方法一:把源代码中所有页面中的非法字符删掉。根据错误提示的页面来找到非法字符,然后删掉它。一般这样就不会有错误了。如果还有错误提示:“Files 的值“ < < < < < < < .mine”无效路径中具有非法字符”,而且又找不到源代码中的路径,那么就尝试方法二的解决办法。原创 2022-05-11 15:21:53 · 1623 阅读 · 2 评论 -
C# 虚方法、重写方法和抽象方法
可使用虚方法、重写方法和抽象方法来定义类类型层次结构的行为。由于类可从基类派生,因此这些派生类可能需要修改在基类中实现的行为。虚方法是在基类中声明和实现的方法,其中任何派生类都可提供更具体的实现。重写方法是在派生类中实现的方法,可修改基类实现的行为。抽象方法是在基类中声明的方法,必须在所有派生类中重写。事实上,抽象方法不在基类中定义实现。对实例方法的方法调用可解析为基类或派生类实现。 变量的类型确定了其编译时类型。 编译时类型是编译器用于确定其成员的类型。 但是,可将变量分...原创 2022-05-09 21:07:31 · 1735 阅读 · 0 评论 -
C# 可为 null 的类型
任何类型的变量都可以声明为“不可为 null”或“可为 null” 。 可为 null 的变量包含一个额外的null 值,表示没有值。 可为 null 的值类型(结构或枚举)由 System.Nullable 表示。 不可为 null 和可为 null 的引用类型都由基 础引用类型表示。 这种区别由编译器和某些库读取的元数据体现。 当可为 null 的引用在没有先对照 null 检查。其值的情况下取消引用时,编译器会发出警告。 当对不可为 null 的引用分配了可能为 null 。 然后将值设置为 5原创 2022-05-09 20:36:48 · 2162 阅读 · 2 评论 -
C# 的数据流加密与解密
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using System.Security.Cryptography;...原创 2022-04-23 17:13:25 · 1164 阅读 · 0 评论 -
C#字节数组(byte[])和字符串相互转换
通过C#中的system.text.encoding获取字符串的编码可以有ASCII,DEFAULT,utf-8以及其他一些方式,对于英文而言这几种所获取的编码是没有太大区别的,而中文则大有不同,其中DEFAULT所采取的是GB2312,可以通过一下方式进行确认,程序运行后会发现bufOfGB和buf是相同的 string str = "hello,我的祖国"; byte[] bufOfGB = System.Text.Encoding.原创 2022-04-23 15:30:56 · 11001 阅读 · 0 评论 -
C# 网络相关操作
网络相关的处理原创 2022-04-23 15:27:58 · 216 阅读 · 0 评论 -
C#的随机数生成
随机数是专门的随机试验的结果。在统计学的不同技术中需要使用随机数,比如在从统计总体中抽取有代表性的样本的时候,或者在将实验动物分配到不同的试验组的过程中,或者在进行蒙特卡罗模拟法计算的时候等等。 产生随机数有多种不同的方法。这些方法被称为随机数发生器。随机数最重要的特性是:它所产生的后面的那个数与前面的那个数毫无关系。 public class RandomHelper { //随机数对象 private Random _random; .原创 2022-04-23 11:30:23 · 5080 阅读 · 1 评论 -
C# 是否管理员权限运行运行软件
using System;using System.Collections.Generic;using System.Linq;using System.Security.Principal;using System.Threading.Tasks;using System.Windows.Forms;namespace administrator{ static class Program { /// <summary> /// ...原创 2022-04-21 22:44:11 · 469 阅读 · 0 评论 -
C#之SQL数据库操作(源码)
namespace SQLOpreate{ public class SqlHelper { /// <summary> /// 数据库连接字符串 /// </summary> public static readonly string ConnectionString = ConfigurationManager.ConnectionStrings["SqlConnectionStr...原创 2022-04-21 22:01:23 · 818 阅读 · 0 评论 -
C#窗体的淡入淡出功能(项目工程源码)
先给大家看一下效果,感觉还可以using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Runtime.InteropServices;using System.Text;using System.Threading.Tasks;using Sys.原创 2022-04-21 21:57:44 · 333 阅读 · 1 评论 -
C#自定义Button实现源码
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Drawing.Text;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace Win.原创 2022-04-21 20:25:17 · 994 阅读 · 0 评论 -
C#中如何将图片添加为程序的资源
经常我们在编程的时候需要将各种图片资源加载到项目工程中,但是如何加载呢,请看下面步骤:1找到C#工程目录下的的“Properties”文件夹中,双击Resources.resx文件2选择文件夹3打开即可4使用资源;Bitmap bmpDraw = Properties.Resources.normal;...原创 2022-04-21 19:55:54 · 1805 阅读 · 0 评论 -
C# 连接sql数据库类
首先在项目中引用下图两个using System;using System.Collections.Generic;using System.Data;using System.Data.SqlClient;using System.Reflection;using System.Configuration;namespace SQLOpreate{ public class SqlHelper { /// <summary>.原创 2022-04-10 22:21:18 · 602 阅读 · 0 评论 -
C# Thread Delegate MethodInvoker Invoke BeginInvoke 关系
异步调用是CLR为开发者提供的一种重要的编程手段,它也是构建高性能、可伸缩应用程序的关键。在多核CPU越来越普及的今天,异步编程允许使用非常少的线程执行很多操作。我们通常使用异步完成许多计算型、IO型的复杂、耗时操作,去取得我们的应用程序运行所需要的一部分数据。在取得这些数据后,我们需要将它们绑定在UI中呈现。当数据量偏大时,我们会发现窗体变成了空白面板。此时如果用鼠标点击,窗体标题将会出现”失去响应”的字样,而实际上UI线程仍在工作着,这对用户来说是一种极度糟糕的体验。如果你希望了解其中的...原创 2022-04-06 20:08:09 · 817 阅读 · 0 评论 -
C#的线程同步
使用线程有几个原因。假设从应用程序中进行网络调用需要一定的时间。我们不希望用户界面停止响应,让用户一直等待直到从服务器返回一个响应。用户可以同时执行其他一些操作,或者甚至取消发送给服务器的请求。这些都可以使用线程来实现。线程是程序中独立的指令流。使用C编写任何程序时,都有一个入口点:Main()方法。程序从Main(方法的第一条语句开始执行,直到这个方法返回为止。这种程序结构非常适合于其中有一个可识别的任务序列的程序,但程序常常需要同时完成多个任务。线程对客户端和服务器端应用程序都非常重要。原创 2022-04-05 12:23:48 · 4067 阅读 · 0 评论 -
C#位数组
位数组如果需要处理的数字有许多位,就可以使用 BitArray类和 BitVector32结构。BitArray类位于名称空间System.Collections 中,BitVector32结构位于名称空间System.Collections.Specialized中。这两种类型最重要的区别是,BitArray类可以重新设置大小,如果事先不知道需要的位数,就可以使用BitArray类,它可以包含非常多的位。Bit Vector32结构是基于栈的,因此比较快。BitVector32结构仅包含32位,它们原创 2022-04-05 09:31:24 · 556 阅读 · 0 评论 -
C# 学习笔记之委托、lambda表达式
委托是寻址方法的.NET 版本。在CH中,函数指针只不过是一个指向内存位置的指针,它不是类型安全的。我们无法判断这个指针实际指向什么,像参数和返回类型等项就更无从知晓了。而.NET委托完全不同,委托是类型安全的类,它定义了返回类型和参数的类型。委托类不仅包含对方法的引用,也可以包含对多个方法的引用。lambda表达式与委托直接相关。当参数是委托类型时,就可以使用lambda表达式实现委托引用的方法。委托:当要把方法传送给其他方法时,需要使用委托。要了解它们的含义,可以看看下面一行代码:原创 2022-04-05 09:07:58 · 1268 阅读 · 0 评论 -
C# 的编译与执行
.NET Framework 的核心是其运行库执行环境,称为公共语言运行库(CLR)或.NET运行库。通常将在CLR控制下运行的代码称为托管代码(managed code)。但是,在CLR执行编写好的源代码(使用CH或其他语言编写的代码)之前,需要编译它们。在.NET中,编译分为两个阶段:(1)将源代码编译为Microsoft中间语言(IL)。(2) CLR把L编译为平台专用的代码。这个两阶段的编译过程非常重要,因为Microsoft中间语言是提供.NET 的许多优点的关键。Micro..原创 2022-04-04 20:58:24 · 3103 阅读 · 1 评论