C# 基础知识系列文章索引

随笔分类 - C#基础知识梳理系列

 
摘要: 前言: 在博客园园友的大力支持下,本人的第一本书《Learninghard C#学习笔记》终于出版了。 这本书是本人学习C#的亲身经历,书籍内容都是本人学习过程当中认为必须掌握的内容,彻底无废话,适合初学者和想系统学习C#的初、中级开发人员。 而且,对于初学者和初、中级工程师另一个好处是:不少... 阅读全文
posted @ 2015-03-16 10:01 Learning hard 阅读(3946) | 评论 (179) 编辑
 
摘要: 1、引言今天在论坛中看到一位朋友提出这样的一个问题,问题大体(问题的连接为:http://social.msdn.microsoft.com/Forums/zh-CN/52e6c11f-ad28-4633-a434-fc4d09f4d23d)是这样的: static void Main(string[] args) { object m1 =1 ; object m2 = 1; Console.WriteLine(m1==m2); Console.WriteLine(m1.Equals(m2... 阅读全文
posted @ 2013-08-12 19:43 Learning hard 阅读(3941) | 评论 (22) 编辑
 
摘要: 1、引言 在C#中,静态和非静态的特征对于咱们来讲是再熟悉不过了,可是不多看到有一篇文章去好好地总结静态和非静态它们之间的不一样,为了帮助你们更好地去理解静态和非静态特征, 因此将在这篇文章中帮你们全面总结下它们之间的不一样,包括静态类,静态成员和静态构造函数。但愿在你们巩固基础的时候能够拿出来好好复习下的。下面废话很少了,直接进入咱们今天的主题。2、为何须要静态特征 在自定义类或看.NET Framework类库中均可以发现,类中大部分都是具体实例特征(也就是没有static标识的),同时咱们也能看到一些具备静态特征的类或成员,例如咱们常用的Console类以及WriteLine方法就.. 阅读全文
posted @ 2013-06-16 00:55 Learning hard 阅读(2513) | 评论 (4) 编辑
 
摘要: 1、引言 对于一些初学者(包括工做几年的人在内)来讲,有时候对于方法之间的参数传递的问题感受比较困惑的,由于以前在面试的过程也常常遇到参数传递的基础面试题,这样的面试题主要考察的开发人员基础是否扎实,对于C#中值类型和引用类型有没有深刻的一个理解——这个说的理解并非简单的对它们简单一个定义描述,而在于它们在内存中分布。因此本文章将带领你们深刻剖析下C#中参数传递的问题,并分享我本身的一个理解,只有你深刻理解了才能在不运行程序的状况就能够分析出参数传递的结果的。2、按值传递对于C#中的参数传递,根据参数的类型能够分为四类:值类型参数的按值传递引用类型参数的按值传递值类型参数的按引用传递引用类. 阅读全文
posted @ 2013-06-11 23:44 Learning hard 阅读(4611) | 评论 (21) 编辑
 
摘要: 本专题概要:引言同步代码存在的问题传统的异步编程改善程序的响应C# 5.0 提供的async和await使异步编程更简单async和await关键字剖析小结1、引言在以前的C#基础知识系列文章中只介绍了从C#1.0到C#4.0中主要的特性,然而.NET 4.5 的推出,对于C#又有了新特性的增长——就是C#5.0中async和await两个关键字,这两个关键字简化了异步编程,之因此简化了,仍是由于编译器给咱们作了更多的工做,下面就具体看看编译器到底在背后帮咱们作了哪些复杂的工做的。2、同步代码存在的问题对于同步的代码,你们确定都不陌生,由于咱们日常写的代码大部分都是同步的,然而同步代码却存在一 阅读全文
posted @ 2013-05-15 16:04 Learning hard 阅读(24605) | 评论 (93) 编辑
 
摘要: C#基础知识系列终于告了一个段落了, 本系列中主要和你们介绍了C#1.0到C# 4.0中一些重要的特性,刚开始写这个专题的初衷主要是我以为掌握了C#这些基础知识以后,对于其余任何的一门语言都是差很少的,这样能够提升朋友们对其余语言的掌握,以及可让你们更加迅速地掌握.NET的新特性, 而且相信这个系列对于找工做的朋友也是颇有帮助的,由于不少公司面试都很看重基础知识是否扎实,是否对C#有一个全面的认识和理解,因此不少公司面试都会问到一些C#基础概念的问题,例如,常常面试会问:你是如何理解委托的,如何理解匿名函数等问题。然而这个系列中并无介绍COM互操做性的内容以及.Net 4.5中的一些新.. 阅读全文
posted @ 2013-01-08 10:30 Learning hard 阅读(12837) | 评论 (51) 编辑
 
摘要: 本专题概要:动态类型介绍为何须要动态类型动态类型的使用动态类型背后的故事动态类型的约束实现动态行为总结引言: 终于迎来了咱们C# 4中特性了,C# 4主要有两方面的改善——Com 互操做性的改进和动态类型的引入,然而COM互操做性这里就不详细介绍的,对于.Net 互操做性我将会在另一个专题中详细和你们分享下我所了解到的知识,本专题就和你们分享C# 4中的动态类型,对于动态类型,我刚听到这个名词的时候会有这些疑问的——动态类型究竟是什么的呢? 知道动态类型大概是个什么的时候,确定又会有这样的疑问——C# 4中为何要引入动态类型的?(确定引入以后能够完成咱们以前不能作的事情了,确定是有好处. 阅读全文
posted @ 2013-01-07 02:23 Learning hard 阅读(8377) | 评论 (28) 编辑
 
摘要: 本专题概要:Linq是什么使用Linq的好处在哪里Linq的实际操做例子——使用Linq遍历文件目录小结引言: 终于到了C# 3中最重要特性的介绍了,能够说以前全部介绍的特性都是为了Linq而作准备的,然而要想深刻理解Linq并非这个专题能够介绍完的,因此我打算这个专题将对Linq作一个简单的介绍,对于Linq的深刻理解我将会后面单独做为一个系列要和你们分享下。1、Linq是什么?Linq也就是Language Integrated Query的缩写,即语言集成查询,是微软在.Net 3.5中提出的一项新技术, Linq主要包含4个组件——Linq to Objects、Linq to X. 阅读全文
posted @ 2012-12-24 00:20 Learning hard 阅读(5235) | 评论 (16) 编辑
 
摘要: 引言: C# 3中全部特性的提出都是更好地为Linq服务的, 充分理解这些基础特性后。对于更深层次地去理解Linq的架构方面会更加简单,从而就能够本身去实现一个简单的ORM框架的,对于Linq的学习在下一个专题中将会简单和你们介绍下,这个专题仍是先来介绍服务于Linq的基础特性——扩展方法1、扩展方法的介绍 我通常理解一个知识点喜欢拆分去理解,因此对于扩展方法的理解能够拆分为——首先它确定是一个方法,然而方法又是对于一个类型而言的,因此扩展方法能够理解为现有的类型(现有类型能够为自定义的类型和.Net 类库中的类型)扩展(添加)应该附加到该类型中的方法。 在没有扩展方法以前,若是咱们想为一.. 阅读全文
posted @ 2012-12-17 14:30 Learning hard 阅读(3324) | 评论 (12) 编辑
 
摘要: 想弄懂Lambda表达式,相信看了本博客以后将不会以为Lambda表达式难理解了 阅读全文
posted @ 2012-12-12 10:19 Learning hard 阅读(7728) | 评论 (25) 编辑
 
摘要: 引言 通过前面专题的介绍,你们应该对C# 1和C# 2中的特性有了进一步的理解了吧,如今终于迎来咱们期待已久的C# 3中特性,C# 中Lambda表达式和Linq的提出至关于完全改变咱们以前的编码风格了,刚开始接触它们,一些初学者确定会以为很难理解,可是我相信,只要多多研究下而且弄明白以后你确定会爱上C# 3中的全部特性的,由于我本身就是这么过来的,在去年的这个时候,我看到Lambda表达式和Linq的时候以为很难理解,并且以为很奇怪的(由于以前都是用C# 3以前的特性去写代码的,虽然C# 3中的特性已经出来好久了,可是本身却写的不多,也没有怎么去研究,因此就以为很奇怪,有一种感受就是——怎. 阅读全文
posted @ 2012-12-11 01:20 Learning hard 阅读(4232) | 评论 (11) 编辑
 
摘要: 引言: 在C# 1.0中咱们常用foreach来遍历一个集合中的元素,然而一个类型要可以使用foreach关键字来对其进行遍历必须实现IEnumerable或IEnumerable<T>接口,(之因此来必需要实现IEnumerable这个接口,是由于foreach是迭代语句,要使用foreach必需要有一个迭代器才行的,然而IEnumerable接口中就有IEnumerator GetEnumerator()方法是返回迭代器的,因此实现了IEnumerable接口,就必须实现GetEnumerator()这个方法来返回迭代器,有了迭代器就天然就可使用foreach语句了),然 阅读全文
posted @ 2012-12-02 23:16 Learning hard 阅读(6248) | 评论 (13) 编辑
 
摘要: 引言: 感受很久没有更新博客了的,真是对不住你们了。在这个专题中将介绍匿名方法,匿名方法看名字也能明白,固然就是没有名字的方法了(现实生活中也有不少这样的匿名过程,如匿名投票,匿名举报等等,相信微软在命名方面确定是根据了生活中例子的),然而匿名方法的理解却不是仅仅是这一句话(这句话指的是没有名字的方法),它还有不少内容,下面就具体介绍下匿名方法有哪些内容1、匿名方法 以前一直认为匿名方法是在C# 3.0中提出的,以前之因此这么认为主要是由于知道C# 3.0中提出了匿名类型,因此看到匿名方法就很理所固然的认为也是在C# 3.0中提出来,然而通过系统的学习C#特性后才发现匿名方法在C# 2.0.. 阅读全文
posted @ 2012-12-01 22:25 Learning hard 阅读(4540) | 评论 (6) 编辑
 
摘要: 引言: C# 2.0 中还引入了可空类型,可空类型也是值类型,只是可空类型是包括null的值类型的,下面就介绍下C#2.0中对可空类型的支持具体有哪些内容(最近一直都在思考如何来分享这篇文章的,由于刚开始以为可空类型使用过程当中比较简单,以为没有讲的必要,可是考虑到这个系列的完整性,决定仍是唠叨下吧,但愿对一些不熟悉的人有帮助)。1、为何会有可空类型 若是朋友们看了我以前的分享,对于这一部分都不会陌生,由于我通常介绍C#特性常常会以这样的方式开头的, 由于每一个特性都是有它出现的缘由的(有一句佛语这是这么讲的:万事皆有因,有因必有果),首先来讲说这个因的(果固然是新增长了可空类型这个新特性了.. 阅读全文
posted @ 2012-11-23 00:42 Learning hard 阅读(4462) | 评论 (24) 编辑
 
摘要: 引言: 在C# 2.0中泛型并不支持可变性的(可变性指的就是协变性和逆变性),咱们知道在面向对象的继承中就具备可变性,当方法声明返回类型为Stream,咱们能够在实现中返回一个FileStream的类型,此时就存在一个隐式的转化——从FileStream类型(子类引用)——>Stream类型(父类引用),而且引用类型的数组也存在这种从子类引用——>父类引用的转化,例如string[] 能够转化为object[](即这样的代码是能够经过编译的:string[] strs =new string[3]; object[] objs =strs;),此时咱们确定会想是否泛型中的泛型参数也 阅读全文
posted @ 2012-11-12 09:16 Learning hard 阅读(4647) | 评论 (12) 编辑
 
摘要: 引言: 本专题主要是承接上一个专题要继续介绍泛型的其余内容,这里就很少说了,就直接进入本专题的内容的。1、类型推断 在咱们写泛型代码的时候常常有大量的"<"和">"符号,这样有时候代码一多,也不免会让开发者在阅读代码过程当中会以为有点晕的,此时咱们以为晕的时候确定就会这样想:是否是可以省掉一些"<" 和">"符号的呢?你有这种需求了, 固然微软这位好人确定也会帮你解决问题的,这样就有了咱们这部分的内容——类型推断,意味着编译器会在调用一个泛型方法时自动判断要使用的类型,(这里要注意的是:类型推 阅读全文
posted @ 2012-11-08 17:25 Learning hard 阅读(3934) | 评论 (16) 编辑
 
摘要: 引言: 在上一个专题中介绍了C#2.0 中引入泛型的缘由以及有了泛型后所带来的好处,然而上一专题至关因而介绍了泛型的一些基本知识的,对于泛型的性能为何会比非泛型的性能高却没有给出理由,因此在这个专题就中将会介绍缘由和一些关于泛型的其余知识。1、泛型类型和类型参数 泛型类型和其余int,string同样都是一种类型,泛型类型有两种表现形式的:泛型类型(包括类、接口、委托和结构,可是没有泛型枚举的)和泛型方法。那什么样的类、接口、委托和方法才称做泛型类型的呢 ?个人理解是类、接口、委托、结构或方法中有类型参数就是泛型类型,这样就有类型参数的概念的。 类型参数 ——是一个真实类型的一个占位符(.. 阅读全文
posted @ 2012-11-08 01:29 Learning hard 阅读(4187) | 评论 (9) 编辑
 
摘要: 引言:前面专题主要介绍了C#1中的2个核心特性——委托和事件,然而在C# 2.0中又引入一个很重要的特性,它就是泛型,你们在日常的操做中确定会常常碰到并使用它,若是你对于它的一些相关特性还不是很了解,那就让咱们一块儿进入本专题的学习的。1、泛型的是什么 泛型的英文解释为generic,固然咱们查询这个单词时,更多的解释是通用的意思,然而有些人会认为明明是通用类型,怎么成泛型了的,其实这二者并不冲突的,泛型原本表明的就是通用类型,只是微软可能有一个比较官方的此来形容本身引入的特性而已,既然泛型是通用的, 那么泛型类型就是通用类型的,即泛型就是一中模子。 在生活中,咱们常常会看到模子,像咱们日常生. 阅读全文
posted @ 2012-11-03 21:54 Learning hard 阅读(4039) | 评论 (17) 编辑
 
摘要: 引言:当咱们在点击窗口中的Button控件VS会帮咱们自动生成一些代码,咱们只须要在Click方法中写一些本身的代码就能够实现触发Click事件后咱们Click方法中代码就会执行,然而我一直有一个疑问的——既然上一专题中说事件是一个多播委托,然而自动生成的代码中只有事件的实例化,却没有看到事件的调用,那既然没有事件调用的代码,那封装的Click为何会执行呢?1、点击按钮时触发Click事件背后发送的事情在引言中提出了个人提问的, 我相信有些朋友可能也会有这样的疑问的,而后事件确定是调用了的, 只是否是咱们代码中调用,而是Butoon控件的内部代码里面调用了事件,而致使委托封装的Click方法 阅读全文
posted @ 2012-10-29 07:37 Learning hard 阅读(6681) | 评论 (26) 编辑
 
摘要: 引言:前面几个专题对委托进行了详细的介绍的,而后咱们在编写代码过程当中常常会听到“事件”这个概念的,尤为是写UI的时候,当咱们点击一个按钮后VS就会自动帮咱们生成一些后台的代码,而后咱们就只须要在Click方法里面写代码就能够,因此可能有些刚接触C#的朋友就以为这样很理所固然的,也没有去思考这是为何的,为何点击下事件就会触发咱们在Click方法里面写的代码呢?事件到底扮演个什么样的角色呢?为了解除你们的这些疑惑,下面就详细介绍了事件,让一些初学者深刻理解C#中的事件的概念。1、为何C#中会有事件的? 前面专题中介绍了我理解的为何须要委托的,因此这里我来分享下我理解的为何C#中要引入事. 阅读全文
posted @ 2012-10-27 19:08 Learning hard 阅读(4241) | 评论 (8) 编辑
 
摘要: 引言:上一专题介绍了下编译器是如何来翻译委托的,从中间语言的角度去看委托,但愿能够帮助你们进一步的理解委托,然而以前的介绍都是委托只是封装一个方法,那委托能不能封装多个方法呢?由于生活中常常会听到,我表明你们的意见等这样的说话,既然委托也是一个表明,那他若是只能表明一我的,那他的魅力就不是很大了吧,因此咱们就会委托能不能表明多个方法的? 答案是能够的,这就是本专题要讲的内容——委托链,委托链也是一个委托,只是由于它是把多个委托链在一块儿,因此咱们就以委托链来这么称呼它的。1、到底什么是委托链咱们日常实例化委托对象时都是绑定一个方法的, 前一个专题介绍的委托也是包装了一个方法的, 用前面的例子就是 阅读全文
posted @ 2012-10-27 10:41 Learning hard 阅读(4240) | 评论 (23) 编辑
 
摘要: 引言:上一个专题已经和你们分享了我理解的——C#中为何须要委托,专题中简单介绍了下委托是什么以及委托简单的应用的,在这个专题中将对委托作进一步的介绍的,本专题主要对委本质和委托链进行讨论。1、委托的本质 平时咱们很容易使用委托——用C# delegate关键字定义委托,再用new操做符构造委托实例,而后经过调用委托实例来调用回调方法(就是用一个了委托对象的变量来代替方法名,这句话若是刚接触的人很差理解的话,这里给个例子:MyDelegatemydelegate =new Mydelegate(obj.mymethod),MyDelegate 是定义的一个委托,假设定义的是没有参数的,而后调. 阅读全文
posted @ 2012-10-25 00:46 Learning hard 阅读(6986) | 评论 (34) 编辑
 
摘要: 引言:对于一些刚接触C# 不久的朋友可能会对C#中一些基本特性理解的不是很深,然而这些知识也是面试时面试官常常会问到的问题,因此我以为有必要和一些接触C#不久的朋友分享下关于C#基础知识的文章,因此有了这个系列,但愿经过这个系列让朋友对C#的基础知识理解可以更进一步。然而委托又是C#基础知识中比较重... 阅读全文
相关文章
相关标签/搜索