![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
.Net
圣殿骑士18
产品经理,需求分析师,程序员,DBA,全栈打杂
展开
-
解读经典-《C#高级编程》第七版-Chapter1-.Net体系结构-Page13-20
01程序集 程序集是包含编译好的、基于.Net Framework的代码逻辑单元。一般来说,在Visual Studio中的一个项目即一个程序集,而一个项目中包含多种不同的代码文件。程序集分为可执行程序集和库程序集,比如一个Winform项目就编译为可执行程序集,而Winform项目所包含的其他库项目则编译为库程序集。可执行程序集包含主程序入口点,而库程序集不包含。 程序集的特...原创 2018-12-20 06:40:17 · 218 阅读 · 2 评论 -
解读经典《C#高级编程》泛型 页122-127.章4
前言本篇继续讲解泛型。上一篇讲解了泛型类的创建。本篇讲解泛型类创建和使用的细节。泛型类上篇举了个我产品中用到的例子,本篇的功能可以对照着此案例进行理解。/// <summary>/// 单一事务处理服务,用于单表的数据读写事务/// </summary>/// <typeparam name="TViewModel"></typepara...原创 2019-03-05 17:48:26 · 1042 阅读 · 0 评论 -
解读经典《C#高级编程》泛型 页114-122.章4
前言本章节开始讲解泛型。.Net从2.0开始支持泛型,泛型不仅是C#的一部分,也与IL代码紧密集成。所以C#中泛型的实现非常优雅。相对于C#,Java是后期引入的泛型,受限于最初的设计架构,就实现的比较别扭,遭到不少人的吐槽,比如“类型擦除”问题。使用C#还是幸福的。使用泛型最典型的应用,可能是List<T>了,从List<T>我们可以看到,使用泛型最明显的优点是:...原创 2019-02-28 17:47:26 · 369 阅读 · 0 评论 -
解读经典《C#高级编程》继承 页107-113.章4
前言本章节开始讲接口。接口接口的声明很像抽象类,有方法的声明但无方法体。但它比抽象类限制更多。和类比起来,接口的定义有众多限制。接口只能包含声明,而无方法体接口只能包含方法、属性、索引器、事件的声明。即不能有:构造函数、字段、操作符重载成员不允许声明修饰符。接口默认就是public的。定义和实现接口一个比较典型的接口定义,比如:/// <summary>//...原创 2019-02-22 18:16:34 · 262 阅读 · 0 评论 -
多种Timer的场景应用
前言今天讲讲各种Timer的使用。三种Timer组件.Net框架提供了三种常规Timer组件,分别是System.Windows.Forms.Timer、System.Timers.Timer和System.Threading.Timer。实际最常用的也就是前两种,而且应用场景比较明确。System.Windows.Forms.TimerForms.Timer基于单线程,也就是基于主...原创 2019-02-15 17:48:21 · 384 阅读 · 2 评论 -
解读经典《C#高级编程》第七版 Page94-100.继承.Chapter4
前言今天,我们开始进入第四章的解读。本章讲的是继承。要做稍微复杂一些的开发,便不可避免的会使用到继承。本篇文章我们主要解读“实现继承”。另外,从本文开始,我开始使用Markdown格式来书写文章,它可以提供更好的布局风格和代码样式。继承的类型我们可能都知道,C++支持多继承,但Java和C#都不支持多继承。多继承非常繁琐和复杂,但现实世界中却又有很多多继承的情况,很简单的比如我们每个...原创 2019-01-22 17:32:31 · 206 阅读 · 1 评论 -
解读经典《C#高级编程》第七版 Page100-107.继承.Chapter4
前言本章节继续讲实现继承。实现继承密封类和密封方法密封类和方法的概念很简单,就是为了不允许类和方法被继承和扩展。不允许扩展一般的原因有:如果类或者方法被扩展,可能会导致类库执行错误因为版权原因,不允许第三方随意扩展该类.Net库有很多密封类,使用者不能随意扩展。我猜测这么做可能是因为设计者想保持框架的纯净性和单一性,即不希望使用者随意扩展而导致出现众多“分支框架”,最终的导致...原创 2019-01-31 17:34:51 · 193 阅读 · 1 评论 -
分享一个效率工具的程序和源代码
前言今天和大家分享一个效率工具,并分享运行程序和完整源代码。这个工具是辅助管理我自己的日常工作而开发的,从06年开始开发第一版,已经持续使用十多年,现在仍然在使用和改进中,这说明这个工具本质上是有效的,所以才能一直坚持使用和优化。在最近,我又用C#和Winform进行了重写。本来我想用WPF或者Electron重写,这样能把界面做的漂亮一点,或者能实现跨平台。但因为工作繁忙,确实难以抽出很多...原创 2019-01-24 17:30:34 · 465 阅读 · 0 评论 -
解读经典《C#高级编程》第七版 Page45-50.核心C#.Chapter2
前言 本篇讲述枚举和名称空间。 01枚举 首先需要明确枚举的概念:枚举是用户定义的整数类型。使用枚举的目标是,使用一组容易记忆的名称,来使得代码更容易编写和维护。我们对比枚举的定义和类的定义,会发现它们有像的地方,有不像的地方,这不同之处体现了枚举的特性。我们按下图举例:C#中,一般习惯于一个文件定义一个类。而一个项目中可能有大量枚举,一般建议将多个枚举定义...原创 2019-01-03 09:53:32 · 271 阅读 · 0 评论 -
解读经典《C#高级编程》第七版 Page79-93.对象和类型.Chapter3
前言 本篇我们继续讲解本章其余的部分:构造函数、只读字段、匿名类型、结构详解、部分类、静态类、Object类、扩展方法,等。 01类 构造函数构造函数是一种特殊的方法:与类同名 没有返回值,甚至不能写void(但可以写修饰符public,private,protected) 未指定构造函数时,编译器会自动创建默认构造函数;一旦手工创建了构造函数,编译器就不会...原创 2019-01-11 17:51:00 · 202 阅读 · 0 评论 -
解读经典《C#高级编程》第七版 Page68-79.对象和类型.Chapter3
前言 新年好,本篇开始进入第三章,《对象和类型》,深刻理解C#的对象,对于使用好.Net类库非常重要。 01类和结构 从使用角度看,结构和类的区别很小,比如,将结构定义转换为类,只需要将关键字struct改为class即可。创建结构的时候,也同样可以用关键字new。它们的本质区别是,结构是值类型,存储在栈上,而类存储在堆上。但我还没碰到什么情况下需要使用结构。因为一...原创 2019-01-10 17:31:38 · 237 阅读 · 0 评论 -
解读经典《C#高级编程》第七版 Page20-32.核心C#.Chapter2
前言 讲到核心C#的语法,其实很难讲,因为大部分是基础知识。如果只讲入门的基础知识,那细节又多,意义也不大。我们就不讲一般性的内容,而是找一些有趣的点,展开讲讲。 01Hello World Hello World一般开始编程的开头,都是写一个Hello World程序,这本书也是不能免俗。我们发现,Hello World基本都是用控制台(Console)程序写的。...原创 2018-12-25 13:16:46 · 269 阅读 · 1 评论 -
解读经典《C#高级编程》第七版 Page50-68.核心C#.Chapter2
前言 本篇讲述Main方法,控制台,注释,预处理指令,编程规范等。这些概念比较琐碎,为避免长篇大论,主要以列举要点的方式来说明。 01Main方法 Main方法并不是所有应用类型的入口方法,它只是控制台程序、Winform程序的入口方法。 创建项目时自动生成的Main方法,其修饰符是未指定的(未指定时默认为private),这说明入口方法并不要求public修饰符。...原创 2019-01-04 09:59:51 · 529 阅读 · 0 评论 -
解读经典-《C#高级编程》第七版-Chapter1-.Net体系结构-Page6-13
01中间语言(IL).Net中间语言(IL)的特性,很大程度上来自于要支持多语言互操作性。要支持多语言互操作性,是因为微软想搞一个大事情,将它的老产品线VB和VC++,VJ++都装入.Net架构中。要支持多语言互操作,就需要实现这些基本功能:1) 继承:一种语言的类能继承另一种语言编写的类。2) 组合:一种语言的类可以包含另外一种语言的类的实例。3) 调用:一个对象能够调用其他...原创 2018-12-18 20:48:01 · 254 阅读 · 2 评论 -
解读经典-《C#高级编程》第七版-Chapter1-.Net体系结构-Page1-6
前言大家好。本号今天重启。看上一篇文章,已经是06年的事情了,从07年之后,我转做产品经理,机缘巧合,在2012年之后,又接触到.Net编程,在2016年正式回归到开发的行列,整整10年。最近几年,在技术上要补以前落下的课,所以变化很快,进步也很快,16年基于DevExpress做Winform开发,17年转到基于asp.net mvc做web开发,再转java web开发,又转Andri...原创 2018-12-12 10:39:43 · 329 阅读 · 1 评论 -
解读经典《C#高级编程》第七版 Page38-45.核心C#.Chapter2
前言 控制流是语言中最基础的部分,我们不谈具体的细节,只讲讲一些关键和有趣的点。 01流控制 条件语句:if, else if, elseif语句的使用非常值得细讲,如何是好的使用习惯。有一点非常重要,就是尽可能的避免太多层次的嵌套,这将带来可读性灾难。我自己的原则是,if嵌套一般不超过2层,最多不超过3层。可读性是什么?是指:不只是你自己写的代码你自己能读懂,更重...原创 2018-12-28 17:30:42 · 251 阅读 · 0 评论 -
解读经典《C#高级编程》第七版 Page32-38.核心C#.Chapter2
前言 接下来讲讲预定义数据类型。关于数据类型,其实是非常值得透彻研究的。 01预定义数据类型 值类型和引用类型C#将把数据类型分为两种,值类型和引用类型,值类型存储在堆栈上,引用类型存储在托管堆上。因此,对于值类型,如果:Int a = 1;Int b = a;那么内存中就有两份的值1。而对应引用类型,如果:User userA = new Us...原创 2018-12-27 10:36:05 · 254 阅读 · 0 评论 -
解读经典《C#高级编程》最全泛型协变逆变解读 页127-131.章4
前言本篇继续讲解泛型。上一篇讲解了泛型类的定义细节。本篇继续讲解泛型接口。泛型接口使用泛型可定义接口,即在接口中定义的方法可以带泛型参数。然后由继承接口的类实现泛型方法。用法和继承泛型类基本没有区别。不变、协变和逆变在.Net4.0之前,泛型接口是不变的。.Net4.0通过协变和逆变为泛型接口和泛型委托增加了重要的扩展。注:本书总体非常好,但在协变和逆变方面,我认为是有缺陷的。我...原创 2019-03-12 17:46:00 · 371 阅读 · 2 评论