![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C#
文章平均质量分 94
vvc223c
这个作者很懒,什么都没留下…
展开
-
C#异步
实现异步方法异步方法是不阻塞当前执行线程的方法。应用程序调用异步方法时,隐含订立了方法很快就将控制权归还给调用环境的协议. 很快指的是如果异步方法要执行耗时很长的操作,就用后台线程允许,使调用者在当前线程上继续运行.定义异步方法:问题假如,定义以下方法来执行一系列耗时很长的操作,这些操作必须顺序执行。然后在这个方法完成前程序会失去响应,一个解决办法是使用Task来增强Run方法的可响应...原创 2019-10-27 13:01:48 · 244 阅读 · 0 评论 -
C#任务、线程、Task类、Parall类
使用并行处理执行多任务处理在应用程序中执行多任务处理主要出于以下原因:1.增强可响应性长时间运行的操作可能涉及不需要处理器事件的任务。比如读写本地硬盘或通过网络收发数据。这个时候让CPU空转来等待任务完成没有意义。这个时候完全可以去干别的事情。2.增强可伸缩性如一个操作是CPU限制的,可有效利用可用的处理资源,并利用这些资源减少执行操作所需的事件来增强伸缩性.在多核处理器之前的时候,单...原创 2019-10-26 16:26:53 · 706 阅读 · 0 评论 -
C#操作符重载、对称操作符、递增递减操作符的重载、结构和类操作符的区别、转换操作符
C#允许在定义自己的类型时重载方法。还可以为自己的类型重载许多现有的操作符.但是注意重载操作符有以下限制:1.不能更改操作符的优先级和结合性.2.不能更改操作符的数量,比如*是二元操作符3.不能发明新的操作符符号.4.操作符应用于内建类型时,不能更改操作符的含义,比如1+2有预定的含义,不允许被重写.5.有的操作符不能重载,比如.操作符………重载操作符重载操作符的语法和方法相...原创 2019-10-26 13:19:40 · 245 阅读 · 0 评论 -
C#委托与事件
理解委托委托是对方法的引用.平时我们调用方法是指定方法名。比如Console.WriteLine("Hello World!");委托对象引用了方法。就像将int值赋给int变量一样,是将方法赋给委托对象.我们之前已经使用过委托了,比如List<T>类的Find方法。List类使用委托执行的操作其他方法还有Max,Min假如我们有一间工厂,有许多台机器,其中有折叠机,...原创 2019-10-25 17:51:54 · 138 阅读 · 0 评论 -
C#枚举集合、IEnumerable接口、IEnumerator接口、手动实现枚举器、使用迭代器来定义枚举器
枚举聚合中的元素之前我们写过这样的代码:foreach极大简化了需要编写的代码,但是foreach只能在特定情况下使用-只能遍历可枚举集合.什么是可枚举集合?就是实现了System.Collections.IEnumerable接口的集合可以看到IEnumerable接口包含了一个名为GetEnumerator的方法:GetEnumerator返回IEnumerator也就是返回了...原创 2019-10-25 16:16:24 · 556 阅读 · 0 评论 -
C#List、LinkedList、Queue、Stack、Dictionary、SortedList、Hashset、Find方法、Lambda表达式
List集合类泛型List类是最简单的集合类.用法和数组差不多,可用标准数组语法引用集合中的元素.创建List集合时不需要指定容量,它能随元素的增加而自动伸缩。这种动态行为是有开销的,如果有必要可指定初始大小.使用方法如下:………LinkedList集合类LinkedList实现了双向链表。列表中每一项除了容纳数据项的值,还容纳了对下一项的引用以及上一项的引用.LinkedLi...原创 2019-10-25 14:50:12 · 854 阅读 · 0 评论 -
C#泛型、使用泛型构建简单的二叉树类、泛型方法、可变性和泛型接口、协变接口、逆变接口
泛型解决方案C# 通过泛型避免强制类型转换,增强类型安全性,减少装箱量.泛型类和方法接受类型参数.它们指定了要操作的对象的类型如下所示:class Queue<T>{ ...}T就是类型参数,作为占位符使用,会在编译时被真正的类型取代.写代码实例化泛型Queue时,需要指定用于取代T的类型,在类中定义字段和方法时,也可以用同样的占位符指定这些项的类型.类型参数不一定...原创 2019-10-24 20:16:08 · 286 阅读 · 0 评论 -
C#索引器的用法
什么是索引器属性被视为一种智能字段;类似地,索引器可被视为智能数组,它的本质是有参属性。属性封装一个值,索引器封装一组值。下面是一个例子:假如我们要将int作为一个由32个二进制位构成的数组使用,该怎么办?比如说,假如bits是int,我们想把它第1位设置位true,我们希望可以这样写:bits[0] = true;但是不能位int使用方括号记号法。该记号法仅仅适合数组或行为与数组相似...原创 2019-10-24 17:02:12 · 445 阅读 · 0 评论 -
C#使用属性、只读属性、只写属性、属性的访问性、在接口中声明属性、自动属性、用属性初始化对象
什么是属性?属性是字段和方法的交集。属性的声明类似如下:属性包含两个代码块,分别以get和set关键字开头。get块包含读取属性时候执行的语句,set块包含在向属性写入时执行的语句.还可以简化语句,类似如下:注意:使用属性的时候不要写错了类似上面这种写法会造成无限递归,会抛出StackOverflowException异常,一般我们习惯把私有方法和字段以小写字母开头,公共方法和字...原创 2019-10-24 15:57:27 · 6962 阅读 · 0 评论 -
C#垃圾回收和资源管理
计算机内存有限,当变量或对象不在需要内存的时候,必须回收内存。值类型离开作用域就会被销毁,引用类型呢?……对象生存期Monkey monkey = new Monkey();上面的代码中new表面上是单步操作,但实际分两步走:1.new从堆中分配原始内存,这个阶段无法干预2.new操作符将原始内存转换成对象,这时必须初始化对象。这个阶段可用构造器控制.monkey变量离开作用域时...原创 2019-10-24 14:35:00 · 544 阅读 · 0 评论 -
C#接口、抽象类和密封类
定义接口定义接口和定义类相似,只不过使用interface关键字.在接口中按照与类和结构一样的方式声明方法,不允许指定任何访问修饰符.此外,接口中的方法是没有实现的,它们只是声明。实现接口的所有类型都必须提供自己的实现 .下面是一个例子: interface Icomparable { int CompareTo(object obj); }接口不...原创 2019-10-24 13:14:59 · 331 阅读 · 0 评论 -
C#类的继承、基类构造器、类的赋值、虚方法、Protected、扩展方法
使用继承使用以下语法声明一个类从另一个类继承:class DerivedClass:BaseClass{ ...}派生类DerivedClass将从BaseClass继承,基类中的方法会成为派生类的一部分.在C#中,一个类最多只允许从一个其他的类派生; 除非将DerivedClass声明为sealed,否则可以使用相同的语法,从DerivedClas派生出更深一级的派生类.clas...原创 2019-10-23 19:22:14 · 1057 阅读 · 0 评论 -
C#参数数组
参数数组重载是指在同一作用域中声明两个或更多同名方法,比如Console.WriteLine重载很有用,但是如果发生变化的不是参数类型,而是参数的数量,怎么办?.假如要向控制台写入许多值,那么该怎么办?是不是要提供Console.WriteLine的更多版本?,让每个版本都获取不同数量的参数?那太麻烦了.有一种技术允许只写一个方法就能接受数量可变的参数。这种技术就是参数数组.使用参数数组...原创 2019-10-23 16:45:46 · 211 阅读 · 0 评论 -
C#声明和使用数组、遍历数组、复制数组、多维数组、交错数组
声明和创建数组声明数组方式如下:int [] pins;数组元素并非只能是基元数据类型,还可以是结构、枚举或类.比如,以下代码创建由Time结构构成的数组.Time[] times;创建数组实例无论元素是什么类型,数组始终都是引用类型.声明数组变量时不需要指定大小,也不会分配内存(仅仅在栈上分配一小块用于存储引用的内存).创建数组实例时才分配内存,数组大小也在这时指定.pin...原创 2019-10-23 16:22:57 · 667 阅读 · 0 评论 -
C#枚举、结构
枚举枚举是值类型声明枚举声明枚举使用enum关键字.使用枚举还可以用可空修饰符?创建可空枚举类型。Season? a = null;选择枚举字面值枚举内部的每个元素都关联一个整数值。默认第一个元素对应整数位0,以后每个元素对应的整数都递增1.可将特定整数常量和枚举类型的字面值手动关联起来,比如后面的summer,Fall,Winter依次递增1,所以就是1,2,3,4...原创 2019-10-23 13:44:15 · 237 阅读 · 0 评论 -
C#值和引用、null值和可空类型、空条件操作符、ref和out、内存的组织方式、Object类、装箱、拆箱、is操作符、as操作符
复制值类型的变量和类C#大多数基元类型都是值类型.比如声明int类下的变量会导致编译器分配4字节内存卡。向int变量赋值(比如10),将导致值被复制到内存块中.类类型则以不同方式处理。声明Circle变量时,编译器不生成代码来分配足以容纳一个Circle的内存块。相反,它唯一做的事情就是分配一小块内存,其中刚好可以容纳一个地址.以后,Circle实际占用内存块的地址会填充到这里.该地址称为对内...原创 2019-10-23 11:17:48 · 497 阅读 · 0 评论 -
c#封装、类的定义和使用、访问性、构造器、重载构造器、解构器、静态方法、共享字段、静态类、静态using语句、匿名类
英语里面的类Class是分类classification的词根,设计类的过程就是对信息进行分类。封装封装是定义类的重要原则,使用类的程序不必关系类内部如何工作。程序只需要创建类的实例并调用类的方法。比如Console.WriteLine,我们不需要去了解Console类将数据如何输出到屏幕的复杂细节.这就是封装的意义.这些复杂的细节是隐藏的,因此,封装有时也叫信息隐藏.它实际有两个目的:...原创 2019-10-22 17:22:15 · 263 阅读 · 0 评论 -
C# 异常之try、catch、checked、unchecked、throw、finaelly
尝试执行代码和捕捉异常C#支持异常和异常处理程序,可以很容易地区分程序主逻辑的代码与处理错误的代码。要想写支持异常处理的应用程序,要做下面两件事:1.把代码放到try块中。代码运行时,会执行try块内的所有语句。如果没有任何异常,这些语句将一个个执行,直到全部执行完毕.2.写完代码块后,要写一个或多个catch处理程序来处理可能发生的错误。每个catch处理程序都捕捉并处理特定类型的异常。...原创 2019-10-22 15:10:06 · 618 阅读 · 0 评论 -
C#复合赋值、While语句、for语句、do语句
使用复合赋值操作符answer = answer + 42;answer += 42;像上面例子一样,任何算术操作符都可以像这样与赋值操作符合并,从而获得复合赋值操作符。比如 *= /= %= += -=注意变量递增或递减1 应该使用操作符++或–.………While语句While语句允许在条件为true时反复运行一个语句,格式如下:While (booleanExpress...原创 2019-10-22 13:09:52 · 590 阅读 · 0 评论 -
C#布尔变量、布尔操作符、条件逻辑操作符、短路求值、if语句,switch语句
布尔变量C#支持bool数据类型,bool只能容纳两个值之一:true 或 false………使用布尔操作符C#提供了几个非常有用的布尔操作符,其中最简单的是NOT操作符,用!表示.!操作符求布尔值的反值,比如a = true,!a 就等于false.此外还有两个常用的布尔操作符 == 和 !=.这两个二元操作符判断一个值是否与相同类型的另一个值相等,结果为bool值.此外还...原创 2019-10-21 20:50:59 · 1056 阅读 · 0 评论 -
C#创建方法、使用方法、使用表达式主体方法、从方法返回多个值、作用域、重载方法、重构代码、可选参数和具名参数
方法是具名的语句序列,如果学过其他编程语言,比如c,c++,可以将方法视为与函数相似的东西.声明方法声明c#方法的语法如下:returnType methodName(ParameterList){ //主体语句}returnType是类型名称,指定方法返回的数据类型,比如int,string.如果没有返回值,要使用void.methodName是调用方法时所用的名称,这个名称同...原创 2019-10-21 18:03:22 · 1318 阅读 · 0 评论 -
c#入门之语句、标识符、关键字、变量、基元数据类型、操作符、优先级、结合性、表达式
语句语句是执行操作的命令,c#语句遵循良好定义的规则集。这些规则描述语句的格式和构成,统称为语法.描述语句做什么的规范称为语义.如Console.WriteLine("Hello world")没有终止分号,上面的语句不能编译.…………标识符标识符是对程序中各个元素进行表示的名称。c#的标识符必须遵循以下语法规则:1.只能使用字母、数字和下划线2.标识符必须以字母或...原创 2019-10-21 16:17:20 · 312 阅读 · 0 评论 -
c#入门之第一个程序以及vs的使用
vs官方下载地址vs2017下载地址与安装教程在vs2017中创建控制台应用程序点击新建|项目选择Visual c# 控制台应用,记住后缀是.NET Framework输入你自己的名称,位置等。然后点击确定创建完毕后得到以下的界面最右侧是解决方案资源管理器解决方案管理器显示了项目相关文件的名称以及其他内容。解决方案位于最顶级,每个应用程序都有一个。一个解决方案可以...原创 2019-10-21 14:41:55 · 461 阅读 · 0 评论