- 2025-01-23.NET开源强大的高级日期和时间库
NodaTime是一个为.NET设计的开源高级日期和时间库,提供了比.NET框架自带的DateTime和DateTimeOffset更加丰富和可靠的日期时间操作功能。1.安装NodaTime首先,通过NuGet安装NodaTime包:Install-PackageNodaTime2.基本概念NodaTime提供了多种日期和时间类型,主
- 2025-01-23Task C#后台任务
TaskC#后台任务C#创建一个没有返回值的任务usingSystem;usingSystem.Threading;usingSystem.Threading.Tasks;classProgram{staticasyncTaskMain(string[]args){//创建并启动一个没有返回值的任务Tasktask1=Task.Run(()=>
- 2025-01-21lambda表达式
lambda表达式可以将lambda表达式理解为匿名函数的简写//基本语法://(参数列表)=>//{//函数体//};//无参无返回值Actiona=()=>{Console.WriteLine("无参无返回值的lambda表达式");};a();//有参数的Action<int>b=(intvalue)=>{Console.WriteLin
- 2025-01-21LinkedList
LinkedListLinkedList是一个可变类型的泛型双向链表LinkedList<int>linkedList=newLinkedList<int>();//往链表尾部加linkedList.Addlast(1);//往链表头部加linkedList.AddFirst(2);//在某个节点之后加一个节点LinkedListNode<int>n=linkedList.Find(1);linkedL
- 2025-01-20C#表达式和运算符
本文我们将学习C#的两个重要知识点:表达式和运算符。本章内容会理论性稍微强些,我们会尽量多举例进行说明。建议大家边阅读边思考,如果还能边实践就更好了。1.表达式说到表达式,大家可能感觉有些陌生,我们先来举个例子。在前面章节的示例代码中,大家一定见过类似这样的代码:i++,它其
- 2025-01-20C# PriorityQueue优先队列
namespacePriorityQueueDemo{publicclassTask{publicstringName{get;set;}}publicclassTaskPriorityComparer:IComparer<(int,int)>{publicintCompare((int,int)x,(int,int)y){
- 2025-01-17并发编程 - 线程浅试
前面已经对线程有了初步认识,下面我们来尝试使用线程。01、线程创建在C#中创建线程主要是通过Thread构造函数实现,下面讲解3种常见的创建方式。1、通过ThreadStart创建Thread有一个带有ThreadStart类型参数的构造函数,其中参数ThreadStart是一个无参无返回值委托,因此我们可以创
- 2025-01-17C#中常见的锁以及用法--18
目录一.C#中存在的锁二.锁的作用三.锁的概念和定义关于锁的完整代码示例代码逐层剖析:全局变量与同步变量Lock(锁)关键字示例Monitor(监视器锁)示例Mutex(互斥量)示例(支持跨进程同步)SemaphoreSlim(信号量)示例ReadWriterLockSlim(读写锁)示例SpinLock(自旋锁)示
- 2025-01-13C# 面试问题大全:037.SOLID 原则中的“O”是什么?
SOLID原则中的“O”:开放封闭原则(Open/ClosedPrinciple,OCP)开放封闭原则(Open/ClosedPrinciple,简称OCP)是SOLID设计原则中的第二个原则。它指出软件实体(类、模块、函数等)应该对扩展开放,对修改封闭。这意味着你可以在不修改现有代码的情况下通过添加新的代码来扩展功能。1.
- 2025-01-13C# 面试问题大全:038:SOLID 原则中的“L”是什么?
SOLID原则中的“L”:里氏替换原则(LiskovSubstitutionPrinciple,LSP)里氏替换原则(LiskovSubstitutionPrinciple,简称LSP)是SOLID设计原则中的第三个原则。它指出子类应该能够替换其父类而不影响程序的正确性。换句话说,在一个程序中,如果使用了某个基类的地方都可以用其子类
- 2025-01-13C#格式化输出
上两期:C#格式化输出-CSDN博客C#格式化输出-CSDN博客Console.WriteLine和Console.WriteConsole.WriteLine和Console.Write是两个用于向控制台输出信息的方法,它们都属于System.Console类。尽管这两个方法的功能相似,但它们之间存在一些关键的区别,这些区别影响了它们的使
- 2025-01-13.NET Core 委托原理解析
.NETCore委托原理解析在.NETCore中,委托(Delegate)是一种类型安全的函数指针,它允许你将方法作为参数传递给其他方法,或者将方法存储在变量中以便稍后调用。委托在事件处理、回调机制以及异步编程中非常有用。理解委托的运行原理对于掌握.NETCore的高级编程技巧至关重要。1.
- 2025-01-12C# 数据类型
C#数据类型主要有三大类型:值类型、引用类型、指针类型值类型值类型是从System.ValueType派生出来的,可以直接为其分配一个具体的值。当声明一个值类型变量时,系统会自动分配一块内存区域来存储这个变量的值。值类型包括如下几种:整型类型:[sbyte]:8位有符号整数,范围从-
- 2025-01-12C#语言简介及代码样例
一、C#语言简介C#(读作“Csharp”)是一种由微软公司开发的面向对象的编程语言,它是.NET平台的重要组成部分。C#语言融合了多种编程语言的优点,具有以下特点:简单易学:语法风格类似于C、C++和Java等语言,对于有相关编程经验的开发者来说很容易上手,同时它也有清晰简洁的语法结构,便
- 2025-01-11C# .netframework 4.5 下的 lock 语法 已经够用了,挺安全的。
如果你在一个线程里用lock语法 锁住了某段数据,当外部粗暴的abort或interrupt这个线程后,退出线程前,这个lock会自动释放了。我做了一个简单的例子来模拟情况,先是写了一个类Class2,里面有一个int_count用来在线程间互斥的修改,用一个_locker来保护。提供了四个方法:s
- 2025-01-09学习笔记:C#高级进阶语法——委托(Delegate)
四、委托4.1、什么是委托,委托的本质是什么呢? 1、形似一个方法,用delegate修饰符修饰。所谓委托,ILSpy反编译识别底层----生成一个一个的类。如果定义在class外部:独立生成一个类,如果定义在class内部,生成了一个类中类:包含一个2、所以委托的本质:就是一个类。4.2、委托的实例化,
- 2025-01-09C#集合:一文掌握12种集合优缺点及使用场景,高效编程必修课!
C#是一种强大的编程语言,广泛用于各种应用和服务开发。集合是一种非常重要的数据结构,它用于存储和管理一组对象。集合的使用贯穿于软件开发的各个方面,从简单的列表到复杂的键值对映射,集合提供了强大的工具来处理数据的集合。本文将详细介绍C#中的各种集合类型及其使用场景,帮助开
- 2025-01-08Queue
队列的本质Queue的本质也是封装了特殊存储规则的object[]数组Queue是队列存储容易,是一种先进先出的数据结构//申明Queuequeue=newQueue();//增加//因为是object数组,所以可以存储各种内容queue.Enqueue(1);queue.Enqueue("123");//取//先进先出objectv=queu
- 2025-01-07c#笔记(3)
栈和堆运行中的程序用两个内存区域来储存数据,栈和堆栈栈(Stack):快速、小型,用于存储短生命周期的简单数据(如值类型和引用的指针)。栈是一个内存数值讲究后进先出的数据结构储存几种类型的数据1.某些类型变量的值2.程序当前的执行环境voidExample1(){ intx=1;//
- 2025-01-0710个C#特色的语法,祝福新年快乐,你知道几个?
10个C#特色的语法,祝福新年快乐,你知道几个?2024-12-3111:51·编程乐趣我是编程乐趣,一个10年.Net开发经验老程序员,点击右上方“关注”,每天为你分享开源项目和编程知识。私信回复:888,领取.Net学习资料!大家好,我是编程乐趣。马上迎来2025年了,祝大家新年快乐!值此新年之际,整理10个C
- 2025-01-06c#笔记(2)
c#程序是一组类型声明C#程序或DLL的源代码是一组类型声明,这些类型声明定义了程序或库的结构、行为以及如何与外部环境交互命名空间是一种将相关类型声明分组并命名的方法,因此通常在作者创造的命名空间内部声明程序类型c#program(1)c#程序由一个或多个类型声明组成。Console
- 2025-01-06C# 队列的各种使用方法 private static ConcurrentQueue
在C#中,ConcurrentQueue<T>是一个线程安全的先进先出(FIFO)集合,它位于System.Collections.Concurrent命名空间中。它非常适合在多线程环境中使用,因为它提供了一些原子操作来确保线程安全。以下是一些常见的ConcurrentQueue<T>使用方法,以ConcurrentQueue<st
- 2025-01-06C# typeof()实例详解
原文链接:https://www.cnblogs.com/ybqjymy/p/12902845.html用于获取类型的 System.Type 对象。typeof 表达式采用以下形式:System.Typetype=typeof(int); 备注若要获取表达式的运行时类型,可以使用.NETFramework方法 GetType,如下所示:1inti=0;2Syst
- 2025-01-04C#进阶
进阶目录进阶枚举数组值类型和引用类型函数函数基础ref和out变长参数和参数默认值函数重载递归函数复杂数据类型结构体排序冒泡排序选择排序飞行棋项目C#高级语法面向对象成员变量构造函数成员属性索引器静态成员拓展方法运算符重载内部类和分部类继承里氏替换原则继承中的构造函
- 2025-01-02C# switch case 元组
在C#中,switch语句不直接支持作用于元组的比较。但是,你可以通过"switch"表达式(C#8.0及更高版本)或者使用一些技巧来处理元组。以下是一个使用"switch"表达式处理元组的例子: (int,int)tuple=(1,2); //使用switch表达式处理元组varresult=tuples