随笔分类 - C#基础系类篇
摘要:1.1 ADO.NET支持哪几种数据源? ① System.Data.SqlClient .NET程序员最常用的了。通过OLEDB或者ODBC都可以访问,但是SqlClient下的组件直接针对MSSQL,因此ADO.NET是为其专门做了一些优化工作。 ② System.Data.OracleClie
阅读全文
摘要:一.多线程编程中的线程同步 1.C#中的lock关键字 lock关键字可能是我们在遇到线程同步的需求时最常用的方式,但lock只是一个语法糖,为什么这么说呢,下面慢慢道来。 (1)lock的等效代码其实是Monitor类的Enter和Exit两个方法 (2)System.Threading.Moni
阅读全文
摘要:一.如何使用异步模式? 异步模式是在处理流类型时经常采用的一种方式,其应用的领域相当广阔,包括读写文件、网络传输、读写数据库,甚至可以采用异步模式来做任何计算工作。相对于手动编写线程代码,异步模式是一个高效的编程模式。 (1)所谓异步模式是个什么鬼? 在启动一个操作之后可以继续执行其他工作而不会发生
阅读全文
摘要:二、.NET中的多线程编程 2.1 如何在.NET程序中手动控制多个线程? 最直接且灵活性最大的,莫过于主动创建、运行、结束所有线程。 (1)第一个多线程程序 .NET提供了非常直接的控制线程类型的类型:System.Threading.Thread类。下面是一个简单的多线程程序: class Pr
阅读全文
摘要:一、多线程编程的基本概念 1.1 操作系统层面的进程和线程 (1)进程 进程代表了操作系统上运行着的一个应用程序。进程拥有自己的程序块,拥有独占的资源和数据且可以被操作系统调度。 But,即使是同一个应用程序,当被强制启动多次时,也会被安放到不同的进程之中单独运行。 直观地理解进程最好的方式就是通过
阅读全文
摘要:1 神马是特性?如何自定义一个特性? (1)特性是什么 特性是一个对象,可以加载到程序集及程序集的对象中,这些对象包括 程序集本身、模块、类、接口、结构、构造函数、方法、方法参数等,加载了特性的对象称作特性的目标。特性是为程序添加元数据(描述数据的数据)的一种机制,通过它可以给编译器提供指示或者提供
阅读全文
摘要:本篇是学习反射的一个应用小场景而做的学习笔记,主要是一个小的总结,并对各个步骤的记录,以便将来回顾。 一、基础框架-敏捷基础版本 这里假定我们要开发一个记事本,选择Windows Form技术开发,界面如下图所示: 该记事本只提供了一个TextBox供输入,以及保存到指定文件。其他功能均没有实现,假
阅读全文
摘要:1.反射产生的背景 对无法直接添加引用的程序集中类型元素的动态获取和使用。使用场景如插件开发,vs本身的智能提示。 2.反射的基本原理 依托于元数据,运行时动态获取并构建程序集、模块、类型及字段等目标对象并调用目标对象(如调用方法,属性赋值)的机制。 元数据,就是描述数据的数据。在CLR中,元数据就
阅读全文
摘要:事件 事件是对象发送的消息,以发信号通知操作的发生。操作可能是由用户交互(例如鼠标单击)引起的,也可能是由某些其他的程序逻辑触发的。 引发事件的对象称为事件发送方。捕获事件并对其作出响应的对象叫做事件接收方。 在事件通信中,事件发送方类不知道哪个对象或方法将接收到(处理)它引发的事件。所需要的是在源
阅读全文
摘要:一、委托初窥:一个拥有方法的对象 (1)本质:持有一个或多个方法的对象;委托和典型的对象不同,执行委托实际上是执行它所“持有”的方法。 (2)如何使用委托? ①声明委托类型(delegate关键字) ②使用该委托类型声明一个委托变量 ③为委托类型增加方法 ④调用委托执行方法 (3)委托的恒定性: 组
阅读全文
摘要:生活中的例子: 你早上要吃包子作为早饭,那么你可能让你爸爸或者妈妈帮你做,那你就会调用 爸爸.要包子() 或妈妈.要包子() 返回包子对象。 但是如果你爸妈不在家的时候,你只能去街上买,问题是你根本不知道街上这些人的名字,那你怎么调用呢? 所以你就要用到委托了,委托就是帮助你定义一个协议(或需求),
阅读全文
摘要:三、流和序列化 3.1 流概念及.NET中常见流 常见的流类型包括:文件流、终端操作流及网络Socket等,在.NET中,System.IO.Stream类型被设计为作为所有流类型的虚基类,当需要自定义一种流类型时也应该直接或者间接地继承自Stream类型。下图展示了在.NET中常见的流类型以及它们
阅读全文
摘要:二、常用集合和泛型 2.1 int[]是值类型还是引用类型? .NET中无论是存储值类型对象的数组还是存储引用类型的数组,其本身都是引用类型,其内存也都是分配在堆上的。所有的数组类型都继承自System.Array,而System.Array又实现了多个接口且直接继承自System.Object。、
阅读全文
摘要:一、字符串处理 1.1 StringBuilder类型 众所周知,在.NET中String是引用类型,具有不可变性,当一个String对象被修改、插入、连接、截断时,新的String对象就将被分配,这会直接影响到性能。在这个组装过程中必将会产生很多临时的String对象,而这些String对象将会在
阅读全文
摘要:一、面向对象的实现 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类型。 1.2 值类型和引用类型的区别? 在.NET中的类型分为值类型和引用类型,其共同点是都继承自System.Object,但最明显的区分标准却是是否继承自System.Va
阅读全文

浙公网安备 33010602011771号