C#
文章平均质量分 88
Abel_01_xu
0 1
展开
-
委托和方法的异步调用
异步调用,通常情况下用于执行一些耗时的操作,同时能够保证当前主线程在执行异步调用之后依然能够继续向下执行。异步执行时,系统往往会创建一个新的线程,但需注意,当每一个异步执行都需要创建线程时,往往会对性能有影响。因此,使用线程池能够有效处理这一问题,避免了进行异步调用时创建、销毁线程的开销。本片文章,结合委托和异步来对BeginInvoke()方法、EndInvoke()方法和其相关的IAsyncResult做一个简单的学习。原创 2023-08-29 16:34:07 · 244 阅读 · 0 评论 -
文件系统设计详解
抽象的文件系统以目录的形式来组织文件,我们可以利用该文件系统来读取某个文件的内容,也可以对目录或者文件实施监控并及时获取变化的通知。原创 2023-03-31 19:33:47 · 497 阅读 · 0 评论 -
.NET CORE依赖注入
依赖注入框架利用 ServiceLifetime 来表示 Singleton、Scoped和Transient这3种生命周期模式Transient代表容器针对每次服务请求都会创建一个新的服务实例;Self将提供服务实例保存在当前容器中,它代表针对某个容器范围内的单例模式;Root将每个容器提供的服务实例统一存放到根容器中,所以该模式能够在多个“同根”容器范围内确保提供的服务是单例的。// 将每个容器提供的服务实例统一存放到根容器中,原创 2023-03-21 11:50:22 · 2030 阅读 · 0 评论 -
特性--反射
特性(Attribute)是一种将自定义信息添加到代码元素(程序集、类型、成员、返回值、参数和泛型类型参数)的扩展机制。自定义特性需定义一个System.Attribute类的派生类,才可以在程序中使用。{{{{{}}{}}}//特性也可被限制使用范围,只需在自定义特性类前面添加[AttributeUsage]特性//该特性第1个参数为AttributeTargets枚举值,以上代码为自定义特性仅允许用于类(Class)和字段(Field)。分析。...原创 2022-07-27 17:29:22 · 218 阅读 · 0 评论 -
ASP.NET CORE--会话
1. 概述HTTP 是一种采用请求/响应消息交换模式且无状态的传输协议。HTTP 协议旨在确保客户端将请求报文发送给目标服务器,并成功接收来自服务端的响应报文,这个基本的报文交换被称为一个HTTP事务(Transaction)。因此同一个客户端和服务端进行的多个http事务是完全相互独立的,所以需要在应用层为二者建立一个上下文来保存多次消息交换的状态,我们将其称为会话(Session)。会话的目的就是在同一个客户端和服务器之间建立两者交谈的语境或者上下文(Cont...原创 2022-04-16 16:16:54 · 818 阅读 · 0 评论 -
C#中String和StringBuilder的区别
1.string类型的特点1)它是引用类型,在堆上分配内存2)运算时会产生一个新的实例3)String 对象一旦生成不可改变4)定义相等运算符(== 和 !=)是为了比较 String 对象的值(而不是引用)2、StringBuilderstringBuilder提供 Append方法,能在已有对象的原地进行字符串的修改,但是如果对大量字符串进行添加操作,stringbuilder耗费的时间比string少的多...原创 2022-03-12 13:49:23 · 1938 阅读 · 0 评论 -
反射和元数据
1. 概述C#程序可以编译为一个包含元数据、编译代码和资源的程序集。在运行时检查并使用元数据和编译代码的操作称为反射。反射相关的API均位于System.Reflection命名空间下。我们甚至可以通过System.Reflection.Emit命名空间中的类在运行时动态创建新的元数据和可执行IL(中间语言)指令。2. 反射和激活类型2.1. 获取类型System.Type的实例代表了类型的元数据。可以说,System.Type实例就是打开类型(和定义该类型的程序集)的所........原创 2022-03-10 10:38:52 · 402 阅读 · 0 评论 -
C# new操作符的作用
CLR要求所有对象(实例)都用new操作符创建,那么new操作符做了哪些事呢?1. 计算字节数 计算类型及其所有基类型(父类)中定义的所有实例字段需要的字节数。堆上每个对象都需要一些额外的成员,包括“类型对象指针”和“同步块索引”。CLR利用这些成员管理对象。2. 给对象分配内存 从托管堆中分配类型要求的字节数,从而分配对象的内存,分配的所有字节都设为0.3. 初始化对象的“类型对象指针”和“同步索引块”成员4. 传递参数 调用类型的实例构造器,传递在new调用...原创 2020-05-27 23:30:56 · 383 阅读 · 0 评论 -
管理控制(配置)
1. 在应用程序目录放入一个配置文件,安装程序会将配置文件安装到应用程序的基目录,从而实现对程序的管理控制2. 配置文件包含XML代码,它既能和应用程序关联,也能和机器关联3. XML配置文件的名称和位置取决于应用程序的类型对于可执行应用程序,配置文件必须在应用程序的基目录,而且必须采用EXE文件全名作为文件名,再附加.config扩展名 对于Web窗体应用程序,文件必须在Web应用...原创 2020-05-26 23:42:52 · 301 阅读 · 0 评论 -
共享程序集和强命名程序集
1. 两种程序集,两种部署备注:公认位置:由多个应用程序访问的程序集必须放到公认的目录,而且CLR在检测到对该程序集的引用时,必须知道检查该目录。 这个公认位置就是全局程序集缓存(Global Assembly Cache GAC)。GAC的具体位置是一种实现细节,不同版 本会有所变化(%SystemRoot%...原创 2019-12-06 14:41:03 · 313 阅读 · 0 评论 -
执行定时计算限制任务
System.Threading命名空间定义了一个Timer类,其作用让一个线程池线程定时调用一个方法。构造Timer类的实例相当于告诉线程池:在将来某个时间回调你的一个方法。一、Timer类注释: callback参数:标识希望由一个线程池线程回调的方法 state参数:允许在每次调用回调方法时都向它传递状态数据 duetime参数:告诉CLR在首次调用...原创 2019-11-08 09:50:50 · 503 阅读 · 0 评论 -
任务、线程和区域性
每个线程都具有一个关联的区域性和 UI 区域性,分别由Thread.CurrentCulture和Thread.CurrentUICulture属性定义。 //通常,除非使用 CultureInfo.DefaultThreadCurrentCulture// 和CultureInfo.DefaultThreadCurrentUICulture 属性在应用程序域//中为所有线程指...翻译 2019-10-30 15:35:02 · 363 阅读 · 0 评论 -
Web Service
一、WebService基本概念1.1 目的 WebService的目的是为了使各个孤立的站点能够相互通信、共享资源。1.2 标准 WebSerice使用的是Internet上统一的、开放的标准:http、xml、soap[简单对象访问协议,是一个用于分散和在分布式环境下交换网络信息的基于XML通信的协议。在此协议下,软件组件或应用程序能够通过标准的http协议...原创 2019-11-03 22:14:00 · 497 阅读 · 0 评论 -
CLR的执行模型概述
一、将源代码编译成托管代码 .NET Framework作为一种开发平台,可面向多种不同的编程语言,因此生成不同类型【Windows桌面应用程序,Windows Store应用程序,Web应用程序,WCF服务】的应用程序或组件。 CLR,公共语言运行时,就是一个可由多种编程语言使用的“运行时”。 CLR的核心功能有:内存管理、程序集加载、安全性、异常处理和线程同步。这些...原创 2019-12-05 13:46:12 · 391 阅读 · 0 评论 -
部署Web应用程序
1. 部署IIS iis是Internet Information Services的缩写,意为互联网信息服务,IIS是一种Web(网页)服务组件,其中包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络(包括互联网和局域网)上发布信息成了一件很容易的事。【选自百度百科】1.1 安装IIS ...原创 2018-12-03 21:14:13 · 1354 阅读 · 0 评论 -
XML、JSON的相互转化以及XML概述
一、XML XML,是指可扩展标记语言,其作用主要用来传输和存储数据,而HTML主要用来显示数据。XML标签并未被预定义,这意味着,XML标签都是自定义的,且XML具有两个重要的特点—XML的文档类型与XML的可移植性(都采用了Unicode标准的编码系统)。故而,当需要调用第三方接口时(参数为XML形式),我们需要知道第三方的xml标签、层结构。通过XML,数据能够存储在独立的X...原创 2019-12-27 15:51:08 · 1329 阅读 · 0 评论 -
IEnumerable接口
一、示例using System;using System.Collections;namespace test1{ class Program { static void Main(string[] args) { ///<summary>什么是IEnumerable?</summary>...翻译 2018-10-31 11:17:33 · 299 阅读 · 0 评论 -
Json的序列化和反序列化的几种方式
【什么是Json】 序列化:将对象转换成字节流的过程,这样就可以轻松将对象保存在磁盘文件或数据库中。 反序列化:序列化的逆过程,就是将字节流转换回原来的对象的过程。 当前主流的序列化JSON字符串主要有两种方式:JavaScriptSerializer及Json.net(Nuget标识:Newtonsoft.Json)。JavaS...转载 2018-12-05 15:56:46 · 2210 阅读 · 0 评论 -
C#之泛型
目录一、泛型的概念1.1、泛型概述1.2、泛型优势示例二、开放类型和封闭类型三、泛型类型和继承四、泛型类型同一性五、泛型接口六、其他可验证性问题6.1 将泛型类型的变量转型为其他类型是非法的,除非转型为与约束兼容的类型。6.2 将泛型类型变量设为null是非法的,除非将泛型类型约束成引用类型。6.3 无论泛型类型是否被约束,使用==或!=操...原创 2019-08-30 13:00:15 · 193 阅读 · 0 评论 -
C#中dynamic的正确用法
C#是类型安全的编程语言。意味着所有表达式都解析成类型的实例,编译器生成的代码只执行对该类型有效的操作。dynamic的出现让C#具有了弱语言类型的特性,有利于处理需要在运行时才会知晓的信息,如果写的是纯C#应用程序,只有在使用反射的时候,才需要和运行时才能确定的信息打交道。编译器在编译的时候不再对类型进行检查,编译期默认dynamic对象支持你想要的任何特性。 va...原创 2019-08-20 18:04:48 · 1417 阅读 · 0 评论 -
进程与线程
进程进程概念 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动【进程是对一段静态指令序列的动态执行过程】,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在当代面向线程设计的计算机结构中,进程是线程的容器【因此,线程只能属于一个进程,而进程可以有多个线程】。程序是指令、数据及其组织形式的描述,进程是程序的实体,而线程是进程的一...原创 2019-10-15 14:33:41 · 96 阅读 · 0 评论 -
可空值类型
一、问题产生 在设计数据库时,数据库中的一列可能为null值,而这使我们在处理数据库中的数据时将变得困难,因为CLR没有办法将int类型表示成null值。二、解决办法 1)在设计数据库时,设置列的默认值,避免列存入空值 2)CLR引入可空值类型三、System.Nullable<T>结构定义的逻辑表示[Serializable,Struct...原创 2019-08-30 12:59:02 · 276 阅读 · 0 评论 -
C#之委托
一、委托1. 将方法绑定到委托时,C#和CLR都允许引用类型的协变性【指方法能返回从委托的返回类型派生的一个类型,即能返回委托类型的子类型】和逆变性【指方法获取的参数可以是委托的参数类型的基类】。注意:只有引用类型才支持协变性和逆变性,值类型或void不支持。2. 委托是类,因此凡是能够定义类的地方,都能定义委托。所有委托都有一个构造器,它获取两个参数,一个是对象引用,另一个是引用了回...原创 2019-08-30 09:10:26 · 383 阅读 · 0 评论 -
参数
1.可选参数与命名参数 设计方法参数时,可为部分或全部参数分配默认值【可选参数】或通过指定参数名称来传递参数。 static void Main(string[] args) { test1(2); test1(2, 3); test2(2, 4); /...原创 2019-08-19 16:03:23 · 210 阅读 · 0 评论 -
C#中的转换运算符as和is
AS和IS对于如何安全的“向下转型”提供了较好的解决方案,因此我们有两种转型的选择:1、使用AS运算符进行类型转换2、先使用IS运算符判断类型是否可以转换,再使用()运算符进行显示的转换先说AS运算符: AS运算符用于在两个应用类型之间进行转换,如果转换失败则返回null,并不抛出异常,因此转换是否成功可以通过结果是否为null进行判断,并且只有在运行时才能判断。AS运算符有一定的适...原创 2018-04-03 09:40:23 · 575 阅读 · 0 评论