C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C++是在C语言的基础上开发的一种面向对象编程语言,应用广泛。C++支持多种编程范式 --面向对象编程、泛型编程和过程化编程。
文章浏览阅读460次。操作符检查表达式的结果是否与给定类型兼容,或者(从c# 7.0开始)根据模式测试表达式。以下示例将类型和常量模式组合在一起,以测试对象是否为Dice实例,如果是,则确定掷骰的值是否为6。使用常量模式执行模式匹配时,is测试表达式是否等于指定的常量。:它测试表达式是否可以转换为指定的类型,如果可以,则将其强制转换为该类型的变量。测试表达式是否可以转换为指定的类型,如果可以,将其强制转换为该类型的变量。语句的直接扩展,可以实现简洁的类型评估和转换。:匹配成功并且将表达式的值绑定到新的局部变量的匹配。_c# is 变量
文章浏览阅读311次。线程锁是多线程并发共享数据,保证一致性的工具。多线程可以同时运行多个任务但是当多个线程同时访问共享数据时,可能导致数据不同步。当有多个线程访问同一对象的加锁方法或代码块时,同一时间只有一个线程在执行,其余线程必须要等待当前线程执行完之后才能执行该代码段。但其余线程是可以访问该对象中的非加锁代码块的。以下介绍.NET(C#)中 lock 和 ReaderWriterLock 的使用。_c# 读取对象时候加锁
文章浏览阅读191次。i < 256;i++)_c# png转bitmap
文章浏览阅读636次。Action是.NET Framework中自带的泛型委托,可以接收一个或多个输入参数,但不返回任何参数,可传递至多16种不同类型的参数类型。在Linq的一些方法上使用的比较多。
文章浏览阅读542次。C#中扩展方法是C# 3.0/.NET 3.x 新增特性,能够实现向现有类型中“添加”方法,以下主要介绍C#中扩展方法的声明及使用。_c#extension
文章浏览阅读256次。适用平台:.NET Framework 4.5+, .NET Standard 1.1+, .NET Core 1.0+适用平台:.NET Framework 1.1+, .NET Standard 2.0+, .NET Core 1.0+适用平台:.NET Framework 1.1+, .NET Standard 2.0+, .NET Core 2.0+命名空间:using System.Net.Http;1)Flurl.Http(可以通过Nuget来安装)命名空间:using Flurl.Http;_c# 发送get请求
文章浏览阅读238次。反射是.NET中的重要机制,通过反射,可以在运行时获得程序或程序集中每一个类型(包括类、结构、委托、接口和枚举等)的成员和成员的信息。可以直接通过反射方式创建对象,即使这个对象的类型在编译时没有加载。本文主要介绍.NET(C#)中反射使用总结,及相关操作的示例代码。
文章浏览阅读440次,点赞10次,收藏9次。log4net 是一个高效、灵活且广泛使用的日志记录库,专门用于 .NET 框架。它是 Apache 的一个开源项目Apache log4j框架在Microsoft .NET平台的实现。log4net 旨在提供一个简单、易用但功能强大的日志系统。本文主要介绍.NET 7 中配置使用log4net,以及相关示例代码。
文章浏览阅读238次。在 C# 中,可以通过。GUID 能够生成高度唯一的标识符,因为它们不依赖于任何特定的硬件或软件环境,并且在生成过程中考虑了时间戳、网络地址等信息,确保了极高的唯一性。除了 "D" 这种格式化选项外,还有其他几种格式化选项可供选择,例如 "N"、"B"、"P" 和 "X"。X 选项:以连续的 32 个数字(没有分隔符),并使用大括号括起来,每组四个数字,并在第三组和第四组之间插入一个下划线。P 选项:将 GUID 格式化为括在小括号中、由连字符分隔的 32 个数字,与 B 选项类似。_c# 对象有guid吗
文章浏览阅读639次。接下来我们来看看如何创建C#异常类,在C#中,创建自定义异常很简单。当发生异常时,程序会停止执行当前的操作,并抛出一个异常对象。当我们抛出一个自定义异常时,可以将更多有用的信息传递给调用者,例如错误消息、错误代码和堆栈跟踪等。例如,当用户尝试创建一个已经存在的账户时,我们可以抛出一个名为DuplicateAccountException的自定义异常。通过创建自定义异常类,我们可以更好地控制程序的行为,并提供有用的错误信息。上面代码如果是除0问题会报系统异常,而自定义异常在触发的时候报自定义异常。_c#生成数字异常
文章浏览阅读735次。抽象工厂模式(Abstract Factory Pattern)是一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。工厂方法模式是为了克服简单工厂模式的缺点而设计出来的,简单工厂模式的工厂类着产品类的增加需要增加额外的代码,而工厂方法模式每个具体工厂类只完成单个实例的创建,它具有很好的可扩展性。_c#抽象工厂模式
文章浏览阅读4.5k次。本文讲述了C#遍历指定文件夹中所有文件的3种方法,以上三种遍历文件夹的方法各有优缺点,根据实际需求来选择使用哪种方法。如果想要完全控制遍历程度,应该使用GetDirectories方法。此方法简单易用,一行代码就可以完成遍历,适用于小型文件夹。但缺点是对于大型文件夹,GetFiles方法会遍历整个文件夹并返回一个包含所有文件的数组,可能导致性能问题。使用FileInfo对象来代表每个文件,可以获取更多文件属性,适用于大型文件夹。这种方案是可以在遍历子文件夹时遍历指定深度,适用于想要完全控制遍历程度的情形。_c#遍历文件夹中的文件名
文章浏览阅读976次。简单工厂模式定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。因为在简单工厂模式中用于创建实例的方法是静态(static)方法,又叫做静态工厂方法(Static Factory Method)模式,简单工厂模式是属于创建型模式。_c# 简单工厂
文章浏览阅读92次。中介者模式(Mediator Pattern)是一种行为型模式,用一个中介对象来封装一系列对象的交互,从而把一批原来可能是交互关系复杂的对象转换成一组松散耦合的中间对象,以有利于维护和修改。中介者模式分离了两个同事类,简化了对象协议,中央控制对象交互,从而使个体对象变得更容易且更简单,它不需要传递数据给其他个体对象,仅需要传给中介者即可。个体对象不需要具有处理内部交流的逻辑,则更加突出它的面向对象特性。通过使用中介者模式,具体的同事类可以独立变化,通过引用中介者可以简化同事类的设计和实现。_c# 中介模式 message
文章浏览阅读456次。备忘录模式(Memento Pattern)是一种行为型模式,又叫做快照模式(Snapshot Pattern)或Token模式,在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。它提供了一种状态恢复的实现机制,使得用户可以方便地回到一个特定的历史步骤,当新的状态无效或者存在问题时,可以使用暂时存储起来的备忘录将状态复原。备忘录实现了对信息的封装,一个备忘录对象是一种原发器对象状态的表示,不会被其他代码所改动。_c#备忘录模式
文章浏览阅读208次。NPOI是指构建在POI 3.x版本之上的一个程序,NPOI可以在没有安装Office的情况下对Word或Excel文档进行读写操作。NPOI这个老牌控件不错,只需要很少的代码就可以实现,下面是一步一步实现。4、在项目右键,找到管理 Nuget 并点击进入,nuget 管理,输入NPOI搜索,选择DotNetCore.NPOI,并点击安装。以上讲述了在.Net7中简单使用NPOI读取Excel文件,并一步一步展示操作过程和代码编写。在Program.cs写入如下代码,代码中有具体的步骤。_.net操作excel
文章浏览阅读197次。设计模式(Design pattern)是代码设计经验的总结。设计模式主要分三个类型:创建型、结构型和行为型。创建型是对象实例化的模式,创建型模式用于解耦对象的实例化过程,主要用于创建对象。结构型是把类或对象结合在一起形成一个更大的结构,主要用于优化不同类、对象、接口之间的结构关系。行为型是类和对象如何交互,及划分责任和算法。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。以下介绍.NET(C#) 设计模式 解释器模式。_c# 设计模式 解释器
文章浏览阅读938次。享元模式(Flyweight Pattern)是一种结构型模式,是运用共享技术有效的支持大量细粒度的对象。它使用共享对象,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似对象;它适合用于只是因重复而导致使用无法令人接受的大量内存的大量对象。通常对象中的部分状态是可以分享。Flyweight模式需要认真考虑如何能细化对象,以减少处理的对象数量,从而减少存留对象在内存或其他存储设备中的占用量。String常量池、数据库连接池、缓冲池等等都是享元模式的应用。_c#享元模式
文章浏览阅读1.3k次。观察者模式(Observer Pattern)是一种对象行为模式。它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。在观察者模式中,主体是通知的发布者,它发出通知时并不需要知道谁是它的观察者,可以有任意数目的观察者订阅并接收通知。观察者模式不仅被广泛应用于软件界面元素之间的交互,在业务对象之间的交互、权限管理等方面也有广泛的应用。观察者模式的主要的作用就是对对象解耦,将观察者和被观察者完全隔离。2)事件委托方式实现。1)面向对象方式实现。_c#观察者模式
文章浏览阅读358次。代理模式(Proxy Pattern)是一种结构型模式,为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。代理模式又叫委托模式,是为某个对象提供一个代理对象,并且由代理对象控制对原对象的访问。代理模式通俗来讲就是我们生活中常见的中介。_c# 代理
文章浏览阅读446次。以下是对五种方法的简单比较和说明:1、使用ManualResetEventWaitHandle:这种方法在实现上较为简单,但是由于线程必须互斥地访问共享资源,因此会导致性能瓶颈。1、C#编程语言和语法:实现多线程程序需要熟悉C#编程语言和语法,包括线程的创建和管理、共享资源的访问和同步等方面的知识。2、多线程编程:多线程编程是指同时运行多个线程的编程模型,它可以提高应用程序的性能和响应能力。3、线程同步机制:线程同步机制是指用于控制多个线程访问共享资源的机制,常用的线程同步机制包括锁、信号量、事件等。_两个线程交替打印1到100
文章浏览阅读222次。自从C# 5.0时代引入async和await关键字后,异步编程就变得流行起来。尤其在现在的.NET Core时代,如果你的代码中没有出现async或者await关键字,都会让人感觉到很奇怪。想象一下当我们在处理UI和按钮单击时,我们需要运行一个长时间运行的方法,比如读取一个大文件或其他需要很长时间的任务,在这种情况下,整个应用程序必须等待这个长时间运行的任务完成才算完成整个任务。换句话说,如果同步应用程序中的任何进程被阻塞,则整个应用程序将被阻塞,我们的应用程序将停止响应,直到整个任务完成。_c# async await返回值
文章浏览阅读5k次。异步编程的核心是Task和Task对象,这两个对象对异步操作建模。它们受关键字async和await的支持。在大多数情况下模型十分简单:对于 I/O 绑定代码,等待一个在async方法中返回Task或Task的操作。对于 CPU 绑定代码,等待一个使用Task.Run方法在后台线程启动的操作。通过使用异步编程,可以避免性能瓶颈并增强应用程序的总体响应能力。但是,编写异步应用程序的传统技术可能比较复杂,使它们难以编写、调试和维护。C# 5 引入了一种简便方法,即异步编程。_c# await
文章浏览阅读778次。模板方法模式(Template Method Pattern)定义了一个算法的步骤,并允许子类为一个或多个步骤提供其实现方式。让子类别在不改变算法架构的情况下,重新定义算法中的某些步骤。模板方法模式是比较简单的一种设计模式,作为模板的方法要定义在父类中,在方法的定义中使用到抽象方法,而只看父类的抽象方法是根本不知道怎样处理的,实际做具体处理的是子类,在子类中实现具体功能,因此不同的子类执行将会得出不同的实现结果,但是处理流程还是按照父类定制的方式。这就是模板方法的要义所在,制定算法骨架,让子类具体实现。_c# 模板
文章浏览阅读779次。如果您需要快速的序列化和反序列化速度和小的数据大小,则 MessagePack-CSharp 是一个不错的选择。1. 数据大小MessagePack-CSharp 生成的数据通常比 System.Text.Json 生成的数据更小,因为 MessagePack-CSharp 使用了一些压缩技术。本文介绍了MessagePack和它在C#的使用,以及它与System.Text.Json的比较,总的来说MessagePack优于System.Text.Json,当然使用的话得根据你的项目情况来定。_system.text.json反序列化丢失数据
文章浏览阅读434次。外观模式(Facade Pattern)提供了一个简单且公用的接口去处理复杂的子系统,并且没有减少子系统的功能。降低子系统的复杂性,避免了客户与子系统直接链接,它也减少了子系统与子系统间的连接,每个子系统都有它的Facade模式,每个子系统采用Facade模式去访问其他子系统。这个外观类为子系统提供一个共同的对外接口,客户对象通过一个外观接口读写子系统中各接口的数据资源。外观模式的缺点是限制了客户的自由,减少了可变性。也是一种结构型模式。
文章浏览阅读284次。C# 匿名方法是一个“内联”语句或表达式,可在需要委托类型的任何地方使用。可以使用匿名函数来初始化命名委托,或传递命名委托作为方法参数。以下内容介绍C# 匿名方法。_c# 使用匿名委托传参
文章浏览阅读1k次。类提供高性能的设置操作。集是不包含重复元素的集合,其元素无特定顺序。泛型的使用保证类型安全,可以避免装箱拆箱。当向对象添加元素时,对象的容量会自动增加。两个集合求交集、并集、差集和补集等操作。表示根据键的哈希代码进行组织的键/值对的集合。对象在插入和删除元素时维护排序顺序,而不会影响性能。处理,如果是值类型,会有装箱操作。表示按排序顺序维护的对象的集合。是对象可以容纳的元素数。_dotnet hashtable hashset
文章浏览阅读153次。桥接模式(Bridge Pattern)是将抽象部分与它的实现部分分离,使它们都可以独立地变化,使得设计更具扩展性,其实现细节对客户透明。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(interface)模式。在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,就需要使用桥接模式(Bridge Pattern)。由于聚合关系建立在抽象层,要求开发者针对抽象化进行设计与编程,这增加了系统的理解与设计难度。_c# 代码设计模式的桥接模式
文章浏览阅读484次。适配器模式(Adapter Pattern)也称包装样式或者包装(wrapper)。将一个类的接口转接成用户所期待的。适配器模式是一种结构型模式,一个适配使得因接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。(2)对象适配器模式。_c# 适配器模式