• C#如何将文件压缩成ZIP并且实时显示压缩进度

    今天来介绍一个C#自带的类ZipFile,这个类主要负责压缩和解压。它有两个非常简单的方法CreateFromDirectory和ExtractToDirectory。CreateFromDirectory:负责将一个文件夹压缩成一个压缩文件。ExtractToDirectory :负责将一个压缩文件解压到指定的目录。以上两个方法并不能实时显示压缩的进度,如果压缩的文件比较小,对进度没有要求,可以

    时间:2024-06-22 14:30 阅读:339
    C#压缩 WPF进度条
  • 记录一次JSON.NET反序列化带来的内存爆炸问题

    JSON.NET是C#开发中必不可少的一个序列化和反序列化工具,我个人是非常喜欢用这个工具的。它不仅仅是可以序列化和反序列化。其实对于内存深拷贝的操作,我也非常喜欢用反序列化直接在内存中copy出一个全新的对象。不过今天给大家记录一个JSON.NET反序列化成dynamic[]对象导致内存暴涨的问题。首先我们声明一个Person 对象,它是我们最终反序列化的对象。class Person{

    时间:2024-06-22 12:55 阅读:267
    JSON.NET C# WPF 内存
  • .NET Core配置文件发生变更的时候,程序如何接受

    .NET Core配置文件发生变更的时候,程序如何接受.NET Core配置文件发生变更的时候,程序如何接受.NET Core配置文件发生变更的时候,程序如何接受.NET Core配置文件发生变更的时候,程序如何接受

    时间:2024-06-22 00:03 阅读:206
  • C#弃元表达式的用法

    弃元符号是什么弃元符号在C#中只是一个下划线 _,当程序员不想关注某些变量的时候,可以使用这个符号。用法一:忽略方法的返回值当C#中某个方法有返回值,但是这个返回值对程序来说没有用处,同时不想在后面的代码中使用这个变量的时候,可以使用弃元符号放弃这变量。_ = Method1(); 用法二:忽略异步方法的返回值当程序中有异步方法的时候,一般都需要await关键字。但是如果希望程序以异步方式

    时间:2024-06-20 00:18 阅读:280
    C# 弃元表达式,弃元符号
  • P/Invoke数据封送:类型传递

    整数类型传递:byte、short、int、long等整数传递对于普通的整数来说,C#和C++的内存结构并没有太大的差异,其实对于绝大部分的语言来说,整数在内存中的结构,基本都是相同的。举个例子,如果如果想把C#中的int类型传递给C++,只需要在C++的函数上定义一个int类型,在C#的定义中也使用一个int类型就可以了。下面是整数类型传递C++和C#的案例。C++定义如下:_declspec(

    时间:2024-06-10 20:11 阅读:196
  • 什么是P/Invoke

    ## P/Invoke简介 简单点说,P/Invoke就是一种可以使本地语言(C++)和高级语言(C#、Java、Python)等其他语言相互调用的技术。我们拿Windows下最熟悉的C#技术来说,通过P/Invoke技术,我们可以实现使用C#调用C++,也可以实现C++调用C#。 下面的介绍我们就都以C#为例来说明。 ## 微软为什么要发明P/Invoke这个技术。 windows系统提供了大量......

    时间:2024-06-06 23:28 阅读:136
  • windows api注册表函数

    #RegOpenKeyEx 打开注册表void RegTest() { HKEY key; LSTATUS res = RegOpenKeyEx(HKEY_CURRENT_USER, L"EUDC", 0, KEY_READ, &key); if (res != ERROR_SUCCESS) { return; } //获取注册表的详细信息 FILETIME ...

    时间:2024-06-06 23:22 阅读:170
  • c# lambda表达式的前世今生

    lambda表达式的发展史 internal class Program{ public delegate void TestDel(int a, int b); static void Main(string[] args) { TestDel test = new TestDel(Test); test = new TestDel(delegat

    时间:2024-06-02 23:27 阅读:140
    c# lambda表达式
  • 环形链表

    环形链表的结构前面我们说到,单链表结构中有一个唯一的头节点和唯一的尾节点,尾节点的指针为NULL。环形链表的结构和单链表的结构其实类似,唯一的不同就是循环链表把尾节点的指针指向了头节点,使整个链表可以形成一个真正的闭环,我们称之为环形链表或者循环链表。其具体的结构图如下: 所以环形链表的算法和单链表的算法差距不大,唯一需要注意的是在操作过程中尾节点的指针一定要及时给它指向头节点。环形链表的定义和单

    时间:2024-02-25 13:55 阅读:154
    数据结构 环形链表
  • 双向链表

    双向链表的结构单链表和环形链表都是属于有方向的链表,每个节点都只有向后的一个指针,所以都只能单向遍历。而且要想查找某个节点的前驱节点会很不方便,因为没有直接指针指向前驱节点。为了解决这些问题,在单链表的每个节点中,再加一个指针指向它的前驱节点,就形成了双向链表,双向链表同样也有一个头节点和一个尾节点。头节点的前驱指针始终为null,尾节点的后驱指针始终为null,双向链表还有一个巨大的优势,就是它

    时间:2024-02-23 17:53 阅读:139
    数据结构 双向链表
  • 什么是数据结构

    我将开始撰写一系列的数据结构教程,大家在阅读过程中,尤其是对于一些概念性的描述,如果没有写过代码的可能很难理解有些内容的含义。如果遇到这种情况,可以先跳过那一部分不理解的内容,等把所有的内容都学完了再回过头看一下,应该都可以理解的。本系列教程需要大家对C#语言的语法有一定的熟悉和了解,本系列课程中不会重点去介绍C#语言本身的内容,默认大家已经对C#语言有一定的了解。如果大家对C#语言本身不了解,可

    时间:2024-02-23 17:53 阅读:130
    数据结构
  • 一维数组

    计算机内存在正式介绍数组之前,我们先来了解一下计算机内存。通俗一点来说,计算机内存就是有一堆0和1组成的一连串的二进制,比如1101010111001。这一连串的数据中每一位我们叫比特位(bit),一个bit表示一个0或者1。但是我们的计算机CPU并不是针对每个bit位进行操作,cpu调度和操作的内存最小单位是字节(byte),一个字节由8bit组成。后续我们涉及到的内存相关的单位也都是基于字节的

    时间:2024-02-23 17:53 阅读:116
  • 线性表

    线性表的逻辑结构今天我们来讲第一种数据结构:线性表。线性表中数据元素有一个基本的特点。就是除了第一个元素和最后一个元素之外,其他的每一个元素都有一个前驱和一个后驱。比如26个英文字(a,b,c,d...x,y,z)这一组数据中包含26个元素,除了第一个元素a和最后一个元素z之外,其他每个元素都有一个前驱节点和一个后驱节点,那么这样的逻辑结构我们称为线性表。本章节下面介绍的内容是对线性表的一些概念描

    时间:2024-02-23 17:53 阅读:190
    数据结构
  • 顺序栈

    堆栈的结构堆栈,简称栈,栈是一种受限制的线性表,它只允许在线性表的一端进行插入和删除操作,俗称入栈和出栈。我们把允许插入和删除的一端叫做栈顶,另外一端叫做栈底,当线性表中没有任何元素的时候叫做空栈。 由于只能在线性表的一端进行入栈和出栈操作,所以就导致了堆栈有一个最基本的规律先进后出,先入栈的元素后出去,后入栈的元素先出去。所以堆栈的算法逻辑和数组链表的逻辑类似,只是操作受到了一些限制。栈的实现堆

    时间:2024-02-23 17:53 阅读:142
  • 链栈

    链栈的结构链栈是堆栈的链式存储结构,它的结构和单链表的结构一模一样,每个节点都有一个唯一的后驱节点,其中头节点作为栈顶,尾节点作为栈底。它的入栈和出栈只能在头节点进行,也就是说,它是受限制的单链表。链栈相对于顺序栈最大的优点就是,它可以动态分配内存空间,原则上只要内存允许,不会出现栈满的情况。也可以这么理解,如果一个单链表只允许在头节点进行增加和删除操作,那么这个单链表就可以叫做链栈,链栈的具体结

    时间:2024-02-23 17:53 阅读:153