C#后台架构师成长之路-高阶知识体系核心

摘要:
编译器将代码编译成中间语言。调用方法时,CLR将特定方法编译成适合本地计算机的机器代码,并缓存编译后的机器代码以供下次调用。通过程序集的操作,CLR提供了各种服务:内存管理、安全管理、线程管理、垃圾收集、类型检查等。4.2非托管代码,直接编译成目标计算机代码。在公共语言运行时环境之外,操作系统直接执行的代码必须提供垃圾收集、类型检查、安全支持和其他服务。

了解了这些东西,熟悉了运用基本都是高工级别的了,其他修修补补就行了。。。。

1、三种预定义特性:attributeUsage、Conditional、obsolete,允许创建自定义特性,派生自System.Attribute类

2、委托和事件

2.1、将方法作为方法的参数:委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递

2.2、将方法绑定到委托:

可以将多个方法赋给同一个委托,或者叫将多个方法绑定到同一个委托,当调用这个委托的时候,将依次调用其所绑定的方法

2.3、声明一个事件不过类似于声明一个进行了封装的委托类型的变量而已,事件应该由事件发布者触发,而不应该由事件的客户端(客户程序)来触发

2.4、很多的委托定义返回值都为 void,如果定义了返回值,那么多个订阅者的方法都会向发布者返回数值,结果就是后面一个返回的方法值将前面的返回值覆盖掉了,因此,实际上只能获得最后一个方法调用的返回值

2.5、四种委托类型:

Delegate至少0个参数,至多32个参数,可以无返回值,也可以指定返回值类型;

Action是无返回值的泛型委托,至少0个参数,至多16个参数;

Func是有返回值的泛型委托,Func<T1,T2,,T3,int> 表示传入参数为T1,T2,,T3(泛型)返回值为int的委托,Func至少0个参数,至多16个参数,根据返回值泛型返回。必须有返回值,不可void;

predicate 是返回bool型的泛型委托,Predicate有且只有一个参数,返回值固定为bool;

3、流与文件的操作、多线程、程序集以及反射、XML文档处理

4、托管代码以及非托管代码

4.1、托管代码(Managed Code)就是中间语言(IL)代码,在公共语言运行库(CLR)中运行。编译器把代码编译成中间语言,当方法被调用时,CLR把具体的方法编译成适合本地计算机运行的机器码,并且将编译好的机器码缓存起来,以备下次调用使用。随着程序集的运行,CLR提供各种服务:内存管理,安全管理,线程管理,垃圾回收,类型检查等等

 4.2非托管代码,直接编译成目标计算机码,在公共语言运行库环境的外部,由操作系统直接执行的代码,代码必须自己提供垃圾回收,类型检查,安全支持等服务。如需要内存管理等服务,必须显示调用操作系统的接口,通常调用Windows SDK所提供的API来实现内存管理

5、Web Service、基于Sockets模型的网络编程

免责声明:文章转载自《C#后台架构师成长之路-高阶知识体系核心》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇oracle报错解决Dubbo的优雅下线原理分析下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ASP.NET MVC 第五回 ActionResult的其它返回值

我们上边所看到的Action都是return View();我们可以看作这个返回值用于解析一个aspx文件。而它的返回类型是ActionResult如 public ActionResult Index(){return View();} 除了View()之外那我们这里还能用于返回什么值呢? 一、ascx页面 场景:要返回代码片断,比如Ajax...

Unity3d 跑酷游戏 之Character Controller篇

                                              unity3d  Character Controller                                                                                       @by  广州小龙       ...

Python之Pandas应用函数(apply),将多个值返回到Pandas dataframe中的行

处理数据中总是会遇到这种需求,对一列数据处理用自定义的函数处理后,会有多个返回值,需要创建新的列来存储新生成的返回值; 搜索中发现了留住的方法,返回pd.Series格式;或者生成列表,但是生成列表的方法,我一直试验不成功,后续还要再多一些尝试; 谢谢楼主的分享: https://codeday.me/bug/20180820/223407.html 1、...

spark内存管理详解

Spark 作为一个基于内存的分布式计算引擎,其内存管理模块在整个系统中扮演着非常重要的角色。理解 Spark 内存管理的基本原理,有助于更好地开发 Spark 应用程序和进行性能调优。本文旨在梳理出 Spark 内存管理的脉络,抛砖引玉,引出读者对这个话题的深入探讨。本文中阐述的原理基于 Spark 2.1 版本,阅读本文需要读者有一定的 Spark 和...

JVM内存管理:深入垃圾收集器与内存分配策略

http://www.open-open.com/lib/view/open1322743689780.html Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。概述:说起垃圾收集(Garbage Collection,下文简称GC),大部分人都把这项技术当做Java语言的伴生产物。事实上GC的历史...

《深度剖析CPython解释器》29. Python内存管理与垃圾回收(第二部分):源码解密Python中的垃圾回收机制

楔子 现在绝大部分的语言都实现了垃圾回收机制,这其中也包括Python,而不同的语言采用的垃圾回收算法也各不相同。那么,常见的垃圾回收算法都有哪些呢? 引用计数法(reference count): 记录对象的被引用此处, 引用计数降为0时回收 标记-清除法(mark-sweep): 从根集合触发, 遍历所有能访问到的对象并对其进行标记, 然后将未被标记...