文章分类 - C# 基础笔记
摘要:通用的语言基础是.NET运行的基础,当我们对程序运行的结果有异议的时候,如何透过本质看表面,需要我们从底层来入手探索,这时候,IL便是我们必须知道的基础。 一、IL基础概念 1.1 什么是IL? IL是.NET框架中间语言(Intermediate Language)的缩写。使用.NET框架提供的编
阅读全文
摘要:3.1 理解同步块和同步块索引 同步块是.NET中解决对象同步问题的基本机制,该机制为每个堆内的对象(即引用类型对象实例)分配一个同步索引,该索引中只保存一个表明数组内索引的整数。具体过程是:.NET在加载时就会新建一个同步块数组,当某个对象需要被同步时,.NET会为其分配一个同步块,并且把该同步块
阅读全文
摘要:.NET为多线程编程提供了丰富的类型和机制,程序员需要做的就是掌握这些类型和机制的使用方法和运行原理。 2.1 如何在.NET程序中手动控制多个线程? .NET中提供了多种实现多线程程序的方法,但最直接且灵活性最大的,莫过于主动创建、运行、结束所有线程。 (1)第一个多线程程序 .NET提供了非常直
阅读全文
摘要:下面的一些基本概念可能和.NET的联系并不大,但对于掌握.NET中的多线程开发来说却十分重要。我们在开始尝试多线程开发前,应该对这些基础知识有所掌握,并且能够在操作系统层面理解多线程的运行方式。 1.1 操作系统层面的进程和线程 (1)进程 进程代表了操作系统上运行着的一个应用程序。进程拥有自己的程
阅读全文
摘要:特性机制可以帮助程序员以申明的方式进行编程,而不再需要考虑实现的细节。 4.1 神马是特性?如何自定义一个特性? (1)特性是什么? 特性是一种有别于普通命令式编程的编程方式,通常被称为申明式编程方式。所谓申明式编程方式就是指程序员只需要申明某个模块会有怎样的特性,而无需关心如何去实现。下面的代码就
阅读全文
摘要:3.1 反射的基本原理是什么?其实现的基石又是什么? 反射是一种动态分析程序集、模块、类型及字段等目标对象的机制,它的实现依托于元数据。元数据,就是描述数据的数据。在CLR中,元数据就是对一个模块定义或引用的所有东西的描述系统。 3.2 .NET中提供了哪些类型实现反射? 在.NET中,为我们提供了
阅读全文
摘要:事件这一名称对于我们.NET码农来说肯定不会陌生,各种技术框架例如WindowsForm、ASP.NET WebForm都会有事件这一名词,并且所有的定义都基本相同。在.NET中,事件和委托在本质上并没有太多的差异,实际环境下事件的运用却比委托更加广泛。 2.1 简述事件的基本使用方法 在Micro
阅读全文
摘要:1.1 简述委托的基本原理 委托这个概念对C++程序员来说并不陌生,因为它和C++中的函数指针非常类似,很多码农也喜欢称委托为安全的函数指针。无论这一说法是否正确,委托的的确确实现了和函数指针类似的功能,那就是提供了程序回调指定方法的机制。 在委托内部,包含了一个指向某个方法的指针(这一点上委托实现
阅读全文
摘要:3.1 流的概念以及.NET中有哪些常见的流? 流是一种针对字节流的操作,它类似于内存与文件之间的一个管道。在对一个文件进行处理时,本质上需要经过借助OS提供的API来进行打开文件,读取文件中的字节流,再关闭文件等操作,其中读取文件的过程就可以看作是字节流的一个过程。 常见的流类型包括:文件流、终端
阅读全文
摘要:2.1 int[]是值类型还是引用类型? 在.NET中的数组类型和C++中区别很大,.NET中无论是存储值类型对象的数组还是存储引用类型的数组,其本身都是引用类型,其内存也都是分配在堆上的。它们的共同特征在于:所有的数组类型都继承自System.Array,而System.Array又实现了多个接口
阅读全文
摘要:1.1 StringBuilder类型有什么作用? 众所周知,在.NET中String是引用类型,具有不可变性,当一个String对象被修改、插入、连接、截断时,新的String对象就将被分配,这会直接影响到性能。但在实际开发中经常碰到的情况是,一个String对象的最终生成需要经过一个组装的过程,
阅读全文
摘要:2.1 如何针对不同的异常进行捕捉? 相信阅读本文的园友都已经养成了try-catch的习惯,但对于异常的捕捉和处理可能并不在意。确实,直接捕捉所有异常的基类:Exception 使得程序方便易懂,但有时这样的捕捉对于业务处理没有任何帮助,对于特殊异常应该采用特殊处理能够更好地引导规划程序流程。 下
阅读全文
摘要:1.1 C#中的类可以多继承吗? 在C#中申明一个类型时,只支持单继承(即继承一个父类),但支持实现多个接口(Java也是如此)。像C++可能会支持同时继承自多个父类,但.NET的设计小组认为这样的机制会带来一些弊端,并且没有必要。 首先,看看多继承有啥好处?多继承的好处是更加贴近地设计类型。例如,
阅读全文
摘要:2.1 .NET中栈和堆的差异? 每一个.NET应用程序最终都会运行在一个OS进程中,假设这个OS的传统的32位系统,那么每个.NET应用程序都可以拥有一个4GB的虚拟内存。.NET会在这个4GB的虚拟内存块中开辟三块内存作为 堆栈、托管堆 以及 非托管堆。 (1).NET中的堆栈 堆栈用来存储值类
阅读全文
摘要:1.1 .NET中所有类型的基类是什么? 在.NET中所有的内建类型都继承自System.Object类型。在C#中,不需要显示地定义类型继承自System.Object,编译器将自动地自动地为类型添加上这个继承申明,以下两行代码的作用完全一致: public class A { } public
阅读全文