摘要: 在看《CLR via C# 》这本书时,作者在谈到值类型的实例构造器时,说到值类型不能显式定义无参构造函数,那么问题来了,C#编译器为什么阻止这么做呢? 当程序以无参的形式new一个struct值类型时,分配一片内存(注意该片内存是之前已经分配过的)并将这片内存的脏数据(因之前已经存储了一些数据)清 阅读全文
posted @ 2018-09-29 23:26 Only雪里梅 阅读(405) 评论(0) 推荐(1) 编辑
摘要: .NET之所以选择异常,而不是返回错误码来报告异常,是由于前者有以下几个优势: 1、异常与oop语言的结合性更好。oop语言经常需要对成员签名强加限制,比如c#中的构造函数、操作符重载和属性,开发者对成员签名中的返回值没有选择余地,故想在oop中统一使用错误码来报告错误是不现实的,替代方案就是在这些 阅读全文
posted @ 2018-10-15 23:40 Only雪里梅 阅读(684) 评论(0) 推荐(0) 编辑
摘要: 1、github中的pull request pull request是一个request,它的目的是让别人pull你的东西。很多初学者误以为这个request的目的是请求别人允许自己pull别人的东西。 2、handle 对这个单词的常见翻译为“句柄”,这个翻译法是从编译原理中借鉴过来的,可以说吓 阅读全文
posted @ 2018-09-24 13:38 Only雪里梅 阅读(306) 评论(0) 推荐(0) 编辑
摘要: 1、静态构造函数 在引入本文的主题之前,我们先来铺垫一下吧,看看静态构造函数的概念及用途。 C#中允许创建无参数构造函数,该函数仅执行一次。它一般被用来初始化静态字段。CLR不能保证在某个特定时刻执行静态构造函数,同时也不保证不同类的静态构造函数按照什么顺序执行,但保证它仅执行一次,即在应用程序创建 阅读全文
posted @ 2018-09-23 14:18 Only雪里梅 阅读(2193) 评论(0) 推荐(0) 编辑
摘要: 1、引言 首先我们先来看看IEquatable<T>接口的出现解决了什么问题。 我们知道,Object基类的Equals方法存在两个明显的问题。一是缺乏类型安全性,二是对于值类型而言需要装箱。在本文中我们就来看下IEquatable<T> Interface是如何解决这两个问题的。 2、IEquat 阅读全文
posted @ 2018-08-27 01:05 Only雪里梅 阅读(13117) 评论(0) 推荐(4) 编辑
摘要: ==操作符因为语法简洁而备受欢迎,但它本身也存在着局限性,比如继承或泛型问题。下面让我们依次来看看吧。 1、==和继承性问题 关于==运算符在继承时存在的问题,我们以String类型为例进行说明。 运行上面代码,依次产生:False、True、True、True。该结果很容易解释,除了Referen 阅读全文
posted @ 2018-08-26 23:59 Only雪里梅 阅读(411) 评论(0) 推荐(1) 编辑
摘要: 在之前的文章中,我们讲到了使用C#中提供的Object类的虚Equals方法来判断Equality,但实际上它还提供了另外一种判断Equality的方法,那就是使用==运算符。许多童鞋也许会想当然的认为==不过是Equals方法的语法糖而已,然而事实却并非如此。尽管从实现上来说,它给出的判定结果往往 阅读全文
posted @ 2018-08-26 15:46 Only雪里梅 阅读(479) 评论(0) 推荐(0) 编辑
摘要: 当我们去查看object.cs源代码文件的时候,会发现object基类提供了三种判断相等性的方法。弄清楚每种方法存在的原因,也就是具体解决了什么问题,对我们理解.net判断对象相等性的逻辑很有帮助,下面让我们分别来看看吧! 1、Virtual Object.Equals()方法 实际上.net中提供 阅读全文
posted @ 2018-08-19 18:17 Only雪里梅 阅读(437) 评论(0) 推荐(0) 编辑
摘要: 有时候编程编的久了,如果不停下来认真思考一下,即便是一些最基础的知识点,也可能让自己懵圈。其实,说到底还是打基础的时候没打牢,或者说自以为是地认为自己懂了,然后在打基础的时候就懒得思考懒得看了,结果就是对这个基础知识点的认识一直停留在自己的固有认识里。 好了,下面进入正题。if、else if和el 阅读全文
posted @ 2018-07-30 23:45 Only雪里梅 阅读(2193) 评论(0) 推荐(0) 编辑
摘要: 1、namespace被用于组织代码,它是classes、interfaces、structs、enums、delegates的集合,同时它也可以包含其他的namespace。 2、namespace的声明若放在.cs文件的起始处,在程序中就可以直接使用该namespace中包含的classs或in 阅读全文
posted @ 2018-07-19 02:31 Only雪里梅 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 1、流的基本概念 流是任何输入输出库的必不可少的组成部分。当你的程序需要从一个外部数据源(比如,files、other PCs或servers等)读或者写数据时,就需要用到流streams。 流是由一个应用程序或输入设备发往另一个应用程序或输出设备的有序字节序列。这些字节被一个接一个地写入和读取,并 阅读全文
posted @ 2018-07-14 22:25 Only雪里梅 阅读(477) 评论(0) 推荐(0) 编辑
摘要: 1、异常处理的总体指导思想 学习C#中的异常处理机制,大概要了解以下几点: 首先,我们需要知道的事所有具体异常都是继承自System.Exception基类的。 其次,要熟悉FCL类库内置好的一些异常,例如:FileNotFoundException。 最后,不仅要懂得catch异常还要懂得thro 阅读全文
posted @ 2018-07-01 17:31 Only雪里梅 阅读(2028) 评论(0) 推荐(0) 编辑
摘要: 本文我们继续通过另一个例子来讲解在C#中如何捕捉异常并进行处理。 首先,我们新建一个控制台应用和一个Class Library Project。如下图所示。 图1 ConsoleUI应用 图2 ExceptionLibrary类库 在ExceptionLibrary中,我们创建了一个Demo类,该类 阅读全文
posted @ 2018-07-01 17:31 Only雪里梅 阅读(510) 评论(0) 推荐(0) 编辑
摘要: 1、JIT编译器调用虚实例方法和非虚实例方法的区别 在讲本文的主题之前,让我们先来看一下method overriding和method hiding的区别。 图1 method hiding 图2 method overriding 从以上两图中可以发现,虽然new出来的Derived对象都隐式转 阅读全文
posted @ 2018-06-24 16:35 Only雪里梅 阅读(324) 评论(0) 推荐(0) 编辑
摘要: 在谈论主题之前,让我们先简单回顾下事件的基础知识吧! 我们知道事件有发出(raises)事件的源,即event sender,也有接收事件通知(notifications)的接收者,即event receiver。因此,若要设计事件必须从发送者和接受者两个Object分别着手设计。其中,发送方类型的 阅读全文
posted @ 2018-06-23 21:38 Only雪里梅 阅读(797) 评论(0) 推荐(0) 编辑
摘要: 我们首先来看下抽象class能发挥优势的使用场景。 假设有一个Cars基类,具体型号的Car继承该基类,并实现自己独有的属性或方法。 有两种具体型号的汽车CarA和CarB均继承自Cars基类。也即它们拥有Cars基类的属性和方法。现在有一个需求,即需要添加一些对CarA和CarB类通用(comme 阅读全文
posted @ 2018-06-10 14:32 Only雪里梅 阅读(598) 评论(0) 推荐(0) 编辑
摘要: 首先,我们看下开放-封闭原则(Open-Closed Principle,简称OCP)的概念: 是指软件实体(类、模块、函数等)应该可以扩展,但是不可修改。 任何新功能(functionality)应该通过添加新class、属性或方法来实现,而不是通过改变现有的代码。 是指软件实体(类、模块、函数等 阅读全文
posted @ 2018-06-10 13:29 Only雪里梅 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 首先,我们先来了解下栈帧和栈的基本知识: 栈帧也常被称为“活动记录”(activation record),是编译器用来实现过程/函数调用的一种数据结构。 栈帧也常被称为“活动记录”(activation record),是编译器用来实现过程/函数调用的一种数据结构。 栈帧也常被称为“活动记录”(a 阅读全文
posted @ 2018-06-09 15:24 Only雪里梅 阅读(4191) 评论(0) 推荐(1) 编辑
摘要: 该篇将开始学习无线通信时遇到的一些基本概念罗列出来,避免混淆和忘记,算是为后续进阶学习打基础吧! 1、信道:信道可分为有线信道和无线信道两大类。前者包括明线、对称电缆、同轴电缆和光缆,后者包括地波传播、短波电离层发射、超短波或微波视距中继。有时信道不单指传输媒介,还包括相关的变换装置(如发送设备、接 阅读全文
posted @ 2018-06-03 22:31 Only雪里梅 阅读(1369) 评论(0) 推荐(0) 编辑
摘要: 今天我们来探索一下Singleton设计模式的实现及应用场景。 Singleton模式属于Creational Type(创建型)设计模式的一种。该模式一般用于确保在应用中仅创建一个某类的instance,在应用中的各个地方对该类的实例对象的引用均指向同一instacne。 Singleton模式的 阅读全文
posted @ 2018-05-22 20:13 Only雪里梅 阅读(447) 评论(0) 推荐(0) 编辑