随笔分类 - C#基础
摘要:在阅读源码时,发现有段代码为 unchecked包括,单忽然忘记了 unchecked是干什么的了,遇事不决问google,将此纪录一下,以便温习。 首先,来简单说一下他们的作用: checked:打开运算溢出检查 unchecked:关闭运算溢出检查 首先,要知道int类型在C#中是一个32位的数
阅读全文
摘要:使用C#已经有好多年头了,然后突然有一天被问到C#Dictionary的基本实现,这让我反思到我一直处于拿来主义,能用就好,根本没有去考虑和学习一些底层架构,想想令人头皮发麻。下面开始学习一些我平时用得理所当然的东西,今天先学习一下字典,Dictionary 一、Dictionary源码学习 Dic
阅读全文
摘要:在.NET4.0之前,如果我们需要在多线程环境下使用Dictionary类,除了自己实现线程同步来保证线程安全外,我们没有其他选择。很多开发人员肯定都实现过类似的线程安全方案,可能是通过创建全新的线程安全字典,或者仅是简单的用一个类封装一个Dictionary对象,并在所有方法中加上锁机制,我们称这
阅读全文
摘要:无论上层语言类型多么复杂,在.NET平台上,都逃不过CTS的约束,今天,我想说的不是CTS,而是上层语言C#类型的一点研究。 请看一下下面的这个代码段: 1 public struct test 2 { 3 public override bool Equals(object obj) 4 { 5
阅读全文
摘要:前面我们讲了一下XML相关的基础知识(一),下面我们在加深一下,看一下XML高级方面。 一、命名空间 1、命名冲突 XML命名空间提供避免元素冲突的方法。 命名冲突:在XML中,元素名称是由开发者定义的,当两个不同的文档使用相同的原俗名时,就会发生命名冲突。例如:下面这个XML文档携带者某个表格中的
阅读全文
摘要:一、走进.NET AppDomain 天哪,.NET Framwork的CLR真是巧妙呢!随着越来越多的对.Net底层编程的了解,一些诸如架构,处理过程的复杂难懂的细节完全的让我叹服,所以呢,再次错过我们之前忽视的细节只美事不可能的了,有个与CLR肩并肩协同工作的一个核心组件,叫做AppDomain
阅读全文
摘要:今天我利用这篇文章给大家讲解一下C#中的序列化与反序列化。这两个概念我们再开发中经常用到,但是我们绝大部分只用到了其中的一部分,剩下的部分很多开发人员并不清楚,甚至可以说是不知道。因此我希望通过这篇文章能让大家对序列化和反序列化的知识有更进一步的掌握。废话不多说,开始进入正题。 一、什么是序列化/反
阅读全文
摘要:一、概述 1、通过反射可以提供类型信息,从而使得我们开发人员在运行时能够利用这些信息构造和使用对象 2、反射机制允许程序在执行过程中动态地添加各种功能 二、运行时类型标识 1、运行时类型标志(RTTI),可以在程序执行期间判断对象类型。例如使用他能够确切的知道基类引用指向了什么类型对象。 2、运行时
阅读全文
摘要:一、NetworkStream的作用 和先前的流有所不同,NetworkStream的特殊性可以在它的命名空间中得以了解(System.Net.Sockets),聪明的你马上就会反应过来:既然是在网络中传输的流,那必然有某种协议或者规则约束他,不错,这种协议就是Tcp/Ip协议。这个是什么东西?别急
阅读全文
摘要:一、简单介绍以下BufferedStream 在前几章的讲述中,我们已经能够掌握流的基本特性和特点,一般进行对流的处理时,系统肩负着IO所带来的开销,调用十分频繁,这时候就应该想个办法减少这种开销,而且必须在已有的Stream进行扩展,有了以上2点要求,那么我们今天的主题BufferedStream
阅读全文
摘要:一、简单介绍一下MemoryStream MemoryStream是内存流,为系统内存提供读写操作,由于MemoryStream是通过无符号字节数组组成的,可以说MemoryStream的性能可以算比较出色,所以它担当起了一些其他流进行数据交互安时的中间工作,同时可降低应用程序中对临时缓冲区和临时文
阅读全文
摘要:一、如何理解FIleStream 通过前3章的学些,相信大家对于Stream已经有一定的了解,但是又如何去理解FileStream呢?请看下图: 我们磁盘中的任何文件都是通过二进制数组组成,最为直观的就是记事本了,当我们新建一个记事本时,它的大小时0KB,我们每次输入一个数字或字母时,文件便会自动增
阅读全文
摘要:在介绍StreamWriter之前,我们首先来了解一下它的父类TextWriter。 一、TextWriter 1、TextWriter的构造函数和常用属性方法 下面是TextWriter的构造函数: 和所有抽象类一样,该类不能直接实例化,它有两个构造函数。 特别说一下第二个构造函数,大家发现这个构
阅读全文
摘要:今天我们来简单的介绍一下StreamReader,在将StreamReader之前,我们先来了解一下他的父类:TextReader。对于TextReader,大家可能比较陌生,下面我们来看一下TextReader是什么。 一、TextReader 首先让我们来理解一下什么是TextReader,从字
阅读全文
摘要:一、什么是Stream 查了一下MSDN,他是这么解释的:提供字节序列的一般视图。 这个解释有点太笼统了,下面,我们来仔细的捋一下 1、什么是字节序列? 字节序列指的是:字节对象被存储为连续的字节序列,字节按照一定的顺序进行排序组成了字节序列。 那么关于流的解释可以抽象为下列情况: 一条河中有一条鱼
阅读全文
摘要:XML和Json是两种最常用的在网络中数据传输的数据序列化格式,随着时代的变迁,XML序列化用于网络传输也逐渐被Json取代,前几天,单位系统集成开发对接接口时,发现大部分都用的WebService技术,而数据传输序列化都是XML,所以想在此重温一下关于XML的相关知识。 一、什么是XML 1、XM
阅读全文
摘要:最近自己写了个小爬虫,里面用到了多线程技术,忽然发现对此技术竟然有些陌生了,于是乎开始疯狂的去问度娘,在此记录下来,以便自己和各位小伙伴们学习。 一、什么是线程 一个应用程序就相当于一个进程,进程拥有应用程序的所有资源进程包括线程,进程的资源被线程共享,但不拥有线程。我们可以打开电脑中的任务管理器,
阅读全文
摘要:对于久经沙场的程序猿来说,类型转换再熟悉不过了,在代码中我们也会经常用到。 前几天,有个学生问我关于类型转换ToString()和Convert.ToString()的区别,这么常用的东西我竟然支支吾吾了半天未回答上来,后来查了一下资料总算弄明白了。 首先,将某类型转换为string,大家会想到几种
阅读全文
摘要:对于ASCII、Unicode、UTF-8这三种编码方式我们经常用到,也经常挂到嘴边,但他们是怎么来的,为什么要存在,具体是怎么个规则,我们并没有做深入了解,下面,就带你看一下他们到底是怎么回事吧…… 一、ASCII 码 我们知道,计算机内部,所有信息最终都是一个二进制值。每一个二进制位(bit)有
阅读全文