随笔分类 - 03、C#基础知识
摘要:
C#基础系列,该系列记录一些基础性的知识内容,很多点仅仅在逻辑判断、模块、框架上使用,没有深入的通过.NET平台中查看具体的实现原理,在IL/CLR/DLR、编译器编译中探索,要通过一个词语来表述-本质,任何事物可能在给到的是表面现象,其内在的本质要我们去探索。本质是为了深入理解,由点到面的过程,了
阅读全文

摘要:
一、前言 泛型是程序设计语言的一种风格和范式,允许在强类型语言中使用一些以后才在指定的类型,在实例化的时候指明这些类。在C#、JAVA、Delphi等语言中存在这种特性称为泛型;在ML、Scala中称为参数多态;在C++语言中称为模板。泛型是.NET2.0引入的一种风格和范式,提高了代码的重用性、类
阅读全文

摘要:
一、前言 dynamic是.NET4.0引入的新类型(静态类型),在编译器中会跳过编译阶段的静态类型(类、int、string、bool、委托等)检查,让dynamic定义类型具备object对象一样的能力。在编译阶段对于dynamic定义的对象假定支持任何操作,在代码运行阶段进行检查、绑定、执行,
阅读全文

摘要:
一、前言 通过学习反射的原理、元数据的内容,延申了解程序集(Assembly)的内容,在vs中创建一个解决方案,解决方案中创建多个项目或者类库、在项目中创建多个类文件(类中定义各种各样的成员变量)然后通过VS编译器将代码编译成.exe文件或者.dll文件。那么问题一、这些文件的内容由什么构成的?问题
阅读全文

摘要:
一、前言 在学习反射的内容中了解到元数据的概念,在VS环境编程中对于类库定义的类通过右键“转到定义”按钮会出现一个“从元数据”的页面,页面包含类相关成员说明且不包含具体的方法和属性内容,一个类似于定义声明、说明书或者清单的内容。延着反射的内容来进一步探究元数据是什么,怎么使用,使用范围等。 二、定义
阅读全文

摘要:
一、定义 Reflection翻译成反射,在实际生活中比如地质勘探中如何了解地球内部构造情况(地壳、地幔和地核),因为没办法通过设备钻入地球深入勘查,就想出对地球发送“地震波”的方式,“横向波”与“纵向波”穿透液体和固体返回情况构建地球内部的结构。反射类比于此,这是一种对象的外部获取对象内部的构造,
阅读全文

摘要:
一、前言 编程中我们会使用特性(Attribute)标注到程序集、类、方法、属性上进行描述,在Asp.net MVC或者Asp.net WebApi中使用过滤器(Filter)对Action、Result、Exception、Authorize进行AOP(切面编程)。并且过滤器和特性结合,将过滤器优
阅读全文

摘要:
一、进程与线程 1、进程(Process):一个正在运行的应用程序在操作系统中被视为一个进程,包含着一个应用程序所需的资源,进程可以包含一个或多个线程。进程之间相互独立,一个进程无法访问另外一个进程的数据。不同应用程序之间的通讯、数据的请求等都可以看成不同进程间通讯。 2、线程(Thread):进程
阅读全文

摘要:
一、前言 在对业务对象抽象成类,定义类的属性、方法、事件等和组织类之间关系的时候会使用到抽象类和接口,两者都具备可以继承的特性,所以就会提出什么时候使用接口?什么时候使用抽象类?使用的原则是什么?等问题,怎么通过合理使用抽象类和接口能够更好表达业务关系,提高代码的扩展性。 二、抽象类 抽象类不与具体
阅读全文

摘要:
一、ASP.NET管道模型 在IIS6.0中,通过工作进程w3wp.exe使用aspnet_isapi.dll加载.NET运行时,其中IIS6.0中引入应用程序池的概念,一个工作进程对应一个应用程序池,一个应用程序池对应一个或者多个Web应用,由IIS5.0的只能提供应用程序域的隔离级别到IIS6.
阅读全文

摘要:
一、前言 C#的委托和事件是比较难以理解的内容,主要是没有理解什么是委托和事件,使用的主要场景是什么,解决了什么问题。大多数时候记住的可能是模糊的定义和各种简短的概要,没有全面的了解而是浅尝辄止。另外.NET提供的各种语法糖让原本就不理解的内容蒙上了神秘的色彩。所以从定义、场景、示例三个方面探究一下
阅读全文

摘要:
一、前言 泛型参数的协变和逆变是在.NET4.0版本及版本之后提出的,解决的问题是在泛型参数存在继承关系的对象要进行隐式转换(里氏替换原则)提供类型安全的转换,在.NET4.0版本之前的时候泛型参数进行类型的转换要通过类型强制转换。所以带来了协变和逆变,协变是子类->父类,逆变是父类->子类,通过站
阅读全文

摘要:
一、前言 .NET Framework是基于Windows的托管代码编程模型,其并不是Win32 Api和COM的一个抽象。Win32 Api是Microsoft32位平台的应用程序编程接口,其提供相应函数调用平台的底层功能。比如窗口管理、窗口通用控制、Shell特性、图形设备接口、系统服务、国际特
阅读全文
