随笔分类 -  C#基础知识

基础即主要
摘要:1、什么是异步编程? 异步编程就是把耗时的操作放进一个单独的线程中进行处理(该线程需要将执行进度反映到界面上)。由于耗时操作是在另外一个线程中被执行的,所以它不会堵塞主线程。主线程开启这些单独的线程后,还可以继续执行其他操作(例如窗体绘制等)。 异步编程可以提高用户体验,避免在进行耗时操作时让用户看 阅读全文
posted @ 2016-09-04 14:16 Helius-黑牛 阅读(2019) 评论(0) 推荐(1)
摘要:1、多线程编程必备知识 1.1 进程与线程的概念 当我们打开一个应用程序后,操作系统就会为该应用程序分配一个进程ID,例如打开QQ,你将在任务管理器的进程选项卡看到QQ.exe进程,如下图: 进程可以理解为一块包含了某些资源的内存区域,操作系统通过进程这一方式把它的工作划分为不同的单元。一个应用程序 阅读全文
posted @ 2016-08-22 23:56 Helius-黑牛 阅读(25061) 评论(1) 推荐(4)
摘要:在C#4.0中,最核心的特性莫过于动态类型的引入。 1、动态类型简介 一直在强调C#是一门静态类型的语言,因为它在定义变量时要明确给出变量的类型。例如在int i=5;这样的代码中,int就是变量i的类型,如果定义变量时没有明确指定变量的类型,则这样的代码是通过不了编译的。 在C#4.0中,微软引入 阅读全文
posted @ 2016-08-21 16:42 Helius-黑牛 阅读(562) 评论(0) 推荐(0)
摘要:1、可选参数和命名实参 可选参数和命名实参就如同一对好基友,因为它们经常一起使用。 1.1 可选参数 可选参数重在“可选”,即在调用方法时,该参数可以明确指定实参,也可以不指定。如下代码所示,下面代码就包含3个参数,一个必备参数和两个可选参数。 在以上代码中,参数x是必选参数,即调用方法必须指定实参 阅读全文
posted @ 2016-08-19 22:38 Helius-黑牛 阅读(285) 评论(0) 推荐(0)
摘要:1、LINQ是什么? LINQ是Language Integrated Query的缩写,即“语言集成查询”的意思。LINQ的提出就是为了提供一种跨越各种数据源的统一的查询方式,它主要包含4个组件--Linq to Objects、Linq to XML、Linq to DataSet和Linq t 阅读全文
posted @ 2016-08-18 23:54 Helius-黑牛 阅读(436) 评论(0) 推荐(0)
摘要:1、什么是扩展方法? 扩展方法,首先是一种方法,它可以用来扩展已定义类型中的方法成员。 在扩展方法诞生之前,如果想为一个已有类型自定义含有特殊逻辑的新方法时,你必须重新定义一个类型来继承已有类型,以这种方式来添加方法。如果基类有抽象方法,则还要重新去实现这个抽象方法。 这样,为了扩展一个方法,需要承 阅读全文
posted @ 2016-08-15 23:18 Helius-黑牛 阅读(7091) 评论(0) 推荐(0)
摘要:Lambda表达式也是C#3.0中最重要的特性之一。 1、Lambda表达式的简介 Lambda表达式可以理解为一个匿名方法,它可以包含表达式和语句,并且用于创建委托或转换为表达式树。在使用Lambda表达式时,都会使用“=>”运算符,该运算符的左边是匿名方法的输入参数,右边则是表达式或语句块。 1 阅读全文
posted @ 2016-08-14 22:54 Helius-黑牛 阅读(782) 评论(0) 推荐(0)
摘要:隐式类型和对象集合初始化器是在C# 3.0中引入的。 1 隐式类型 var关键字,主要还是编译器根据变量的值来推断其类型。 1.1隐式类型的局部变量 其实当你把鼠标放在var上面的时候,还是可以看到其类型的。 使用隐式类型时有一些限制,包括一下几点: (1)被声明的变量是一个局部变量,不能为字段(包 阅读全文
posted @ 2016-08-11 00:05 Helius-黑牛 阅读(1055) 评论(0) 推荐(0)
摘要:迭代器也是C# 2.0的产物。 1.1 迭代器的简介 迭代器记录了集合中的某个位置,它使程序只能向前移动。C# 1.0中使用foreach语句来实现访问迭代器的内置支持,foreach使遍历集合变得简单,它比for语句更方便,也更容易理解。foreach被编译器编译后,会调用GetEnumerato 阅读全文
posted @ 2016-08-09 23:39 Helius-黑牛 阅读(339) 评论(0) 推荐(0)
摘要:与前面的可空类型是一样的,匿名方法也是C# 2.0里面提出来的。 1 匿名方法 1.1 什么是匿名方法? 顾名思义,就是没有名称的方法,因为没有名称,匿名方法只能在函数定义(匿名方法是把方法的实现和定义嵌套在了一起)的时候被调用,在其他任何情况下都不能被调用。对于编译器来说,匿名方法并不是没有名字的 阅读全文
posted @ 2016-08-08 23:43 Helius-黑牛 阅读(495) 评论(0) 推荐(0)
摘要:可空类型这个优美的特性是在C#2.0里面提出来的。 1、可空类型 当我们在使用数据库的时候,会发现这样的一个矛盾点:数据库的字段设置是允许为null的,比如日期的字段,当你想把数据库表映射为C#中的对象时会发现,DateTime类型在C#语言中是不能为null的! 1.1 简介 可空类型也是值类型, 阅读全文
posted @ 2016-08-07 21:41 Helius-黑牛 阅读(1261) 评论(0) 推荐(0)
摘要:中间因为比较忙,空了那么多天,都感觉有点罪过了。话不多说,这一篇主要是要讲C#2.0提出的一个新特性,那就是泛型。(现在都C#6.0了。囧囧) 1、什么是泛型? C#1.0中的委托特性使方法可作为其他方法的参数来传递,而C#2.0中提出的泛型特性则使类型可以被参数化,从而不必再为不同的类型提供特殊版 阅读全文
posted @ 2016-04-23 18:05 Helius-黑牛 阅读(1580) 评论(0) 推荐(0)
摘要:在C#中,有两种大类型——值类型和引用类型。 1、值类型与引用类型 深入的理解这两种类型是非常重要的,面试官会考验面试者对这两个知识的了解来判断基础是否扎实,并且有没有深入的去思考。 1.1 什么是值类型与引用类型 值类型主要包括简单类型、枚举类型和结构体类型等。值类型的实例通常被分配到线程的堆栈上 阅读全文
posted @ 2016-04-12 11:12 Helius-黑牛 阅读(458) 评论(0) 推荐(0)
摘要:在前面一篇中写到了委托,也说了委托是C#中很多特性的基础,这篇要讲的事件,就是建立在委托之上的。在C#1.0中,委托和事件是最重要的两个特性。 1、什么是事件? 事件设计到两类角色——事件发布者和事件订阅者。当某个事件发生后,事件发布者会发布消息;事件订阅者会接收到信息,并做出相应的处理,这就是事件 阅读全文
posted @ 2016-04-11 10:32 Helius-黑牛 阅读(423) 评论(0) 推荐(0)
摘要:委托是C#最重要的特性之一,C#后面的所有特性基本都是建立在委托的基础上的。 1、C#委托是什么? 可以把C#的委托理解为函数的一个包装,它使得C#中的函数可以作为参数来被传递。如果你学过C++,可以理解为相当于上面的函数指针。 委托的定义和方法的定义类似,只是在定义的前面多了一个delegate关 阅读全文
posted @ 2016-04-07 13:31 Helius-黑牛 阅读(581) 评论(1) 推荐(1)
摘要:接口的出现,是为了解决C#中不允许多重继承的问题。 1、什么是接口? 我觉得可以把接口理解为对一组方法声明进行的统一命名,但这些方法没有提供任何实现。 通过接口,就可以对方法进行统一管理,避免了在每种类型中重复定义这些方法。 2、如何使用接口来编程 2.1 接口的定义 interface ICust 阅读全文
posted @ 2016-04-02 19:35 Helius-黑牛 阅读(681) 评论(0) 推荐(0)
摘要:所有的面向对象语言都具有3个基本特征,C#也是不例外的。 封装 把客观事物封装成类,并将类内部的实现隐藏,以保证数据的完整性; 继承 通过继承可以复用父类的对象; 多态 允许将子对象赋值给扶对象的一种能力。 1、封装 封装指的是把类内部的数据隐藏起来,不让对象实例直接对其操作。在C#中,封装可以通过 阅读全文
posted @ 2016-03-29 21:00 Helius-黑牛 阅读(638) 评论(0) 推荐(2)
摘要:1、什么是类? 面向对象的语言,最基本的就是类。在C#中,类是这样来定义的:类代表一组具有公共属性和行为的对象。 举个例子,现实生活中,人就是一个“类”,但这只是一个统称,指所有的人。我们要找个人一起去玩,此时就需要找到一个具体的人。比如我和小红,我们两个就是“人”这个类的两个实例。 2、C#中如何 阅读全文
posted @ 2016-03-26 21:07 Helius-黑牛 阅读(807) 评论(3) 推荐(2)
摘要:这一篇是IL系列的最后一篇的,主要是要说一下IL中的流程控制。我相信,经过前面三篇的介绍,看IL代码应该不是什么大问题了吧。好吧,闲话不多说了,就来简单的说一下吧。 还是跟前几篇一样,以例子来解释说明。 转换为IL代码如下: 大家是否看到了上图中我画的红色框框,这个就是流程控制的关键,下面我最后一次 阅读全文
posted @ 2016-03-22 20:18 Helius-黑牛 阅读(772) 评论(0) 推荐(2)
摘要:由于要写毕业论文的缘故,最近比较没有时间写,总是要抽出时间抽出时间。诶,这样的生活比较烦躁。 这一篇主要写委托、类、方法的IL代码,一一来说明。 委托:搞过C#的都应该清楚,委托实际上是一个类。编译器会把它编译成一个类,继承自MulticastDelegate的类,里面有三个方法,BeginInvo 阅读全文
posted @ 2016-03-20 22:18 Helius-黑牛 阅读(785) 评论(0) 推荐(1)