C#基础知识整理
文章平均质量分 75
温故而知新可以为师矣。
杨友山
多年软件开发管理经验,曾在腾讯、中兴通讯等企业从事软件开发和管理工作,熟悉技术和开发管理;曾在微软从事售前技术支持,接触过产品销售。目前在从事低代码平台类产品研发相关工作。 擅长.NET领域,前端angular,vue,typescript,Oracle,云计算相关。
展开
-
C#基础知识整理 基础知识(21) 委托(二)
看了前面一篇委托的用法中http://blog.csdn.net/yysyangyangyangshan/article/details/8252192,我们看到, public void Description(string programerName, DescriptionDelegate description) { descr原创 2012-12-04 14:41:19 · 2650 阅读 · 2 评论 -
C#基础知识整理 基础知识(20) 委托(一)
委托和事件在C#中使用很多,尤其在进行窗体编程时,很多的操作都要通过委托和事件来处理和传递。这里详细解释下委托和事件的用法和原因,使我们在写代码时能更加明白一些。委托的使用事件是一种机制,事件是通过委托实现的,所以看明白了委托,对于事件也就能更好的理解了。先看下面一个小例子。这是描述不同语言的程序员的代码:比如使用C#的程序员我们这样描述,其中programerName参数表示这个原创 2012-12-03 16:09:57 · 3687 阅读 · 1 评论 -
C#基础知识整理 基础知识(19) 值类型的装箱和拆箱(二)
如果代码中会造成编译器的反复装箱,可改为手动装箱,这样来使代码执行更快,看下面代码: //手动装箱 Int32 v = 5; //由于string.Format的参数是object类型,所以这里会造成三次装箱。 Console.WriteLine(string.Format("{0},{1}原创 2012-11-29 13:41:54 · 2429 阅读 · 1 评论 -
C#基础知识整理 基础知识(18) 值类型的装箱和拆箱(一)
仔细了解装箱和拆箱其实是很有趣的,首先来看为什么会装箱和拆箱呢?看下面一段代码: class Program { static void Main(string[] args) { ArrayList array = new ArrayList(); Point p;//分配一个原创 2012-11-27 16:19:00 · 2547 阅读 · 1 评论 -
C#基础知识整理 基础知识(17)ILiest接口——泛型
对于ArrayList中如果插入值类型会引发装箱操作,而取出值类型又需要拆箱,如下 ArrayList myArrayList = new ArrayList(); myArrayList.Add(40);//装箱 myArrayList.Add(80);//装箱原创 2012-11-20 10:51:08 · 2357 阅读 · 2 评论 -
C#基础知识整理 基础知识(16) IList接口——非泛型
了解了ICollection接口、迭代以及泛型集合,下面再详细了解一下IList接口。通过MSDN可以看到IList接口有两种:元素为object类型的IList接口,可以放不同类型的对象引用;IList泛型接口,只能存放指定类型的对象引用。其实,IList和IList也称之为向量,特点是可以动态的改变集合的长度,无需确定集合的初始长度,集合会随着存放数据的数量自动变化。可原创 2012-10-25 16:26:07 · 6311 阅读 · 2 评论 -
C#基础知识整理:基础知识(15) ICollection、迭代及泛型
1、ICollection接口 数组是.net framework定义的最基本的集合类型,除了数组,.net framework还定义了很多集合类型。打开msdn可以看到,所有集合都在System.Collections命名空间下:集合类:ArrayList:使用大小可按需动态增加的数组实现IList接口。BitArray:管理值的压缩数组,该值表示为布尔值,true表示位是原创 2012-10-18 17:45:36 · 5404 阅读 · 1 评论 -
C#基础知识整理:基础知识(14) 数组
无论哪种语言,肯定会有集合的概念。而最简单,最直观的集合应该就是数组了,数组是在内存中连续的一段空间。看看C#中数组的定义。1、int[] intArry ; intArry= new int[6]; 这里声明了一个int数组类型变量intArry,并保存一个具有6个单元的int数组对象; int[,] intArry2 = new int[3, 4]; 声明一个int二维原创 2012-10-12 17:47:36 · 2789 阅读 · 1 评论 -
C#基础知识整理:基础知识(13) 异常
往往我们在写代码的时候,总会在运行中遇到某些问题而导致程序崩溃。这并不是编程人员的水平不行,而是由业务逻辑,操作系统,或者电脑等其它设备出现问题而造成,比如在c#中经常用到user32.dll里的一些方法,假如这个文件被删掉了,你的程序照样运行不了。当然作为一个有水平的程序员总会在写程序时是需要将各种情况都考虑进去的,水平越高考虑的情况就越多,而考虑的越多你的程序崩溃的机会就越少,健壮性就越好。原创 2012-08-31 18:18:18 · 2631 阅读 · 1 评论 -
C#基础知识整理:基础知识(12) 超类Object
面向对象三大特性:封装,继承,多态。那么类是从哪里继承呢?在面向对象语言中有基类或者也叫做超类的概念,也就是所有类都是从这个类继承得来的,这个超类叫Object。.net中是这样描述Object类的: 支持 .NET Framework 类层次结构中的所有类,并为派生类提供低级别服务。这是 .NET Framework 中所有类的最终基类;它是类型层次结构的根。既然是超类,Objec原创 2012-07-30 11:36:45 · 6085 阅读 · 1 评论 -
C#基础知识整理:基础知识(11) 值类型,引用类型
C#是面向对象的语言,在面向对象的思想中,只有对象,所有事物都可以用类描述。所以比如这些,int,bool,char,string,double,long等都是类,那么像,30,2.5,"test"都是对应类的一个对象。 static void Main(string[] args) { string istring = 30.ToSt原创 2012-07-25 14:19:38 · 2646 阅读 · 1 评论 -
C#基础知识整理:基础知识(10) 静态
如果想访问某个类的方法或属性,一定要先实例化该类,然后用该类的对象加.号访问。比如:有一个用户类和一个处理密码(加密和解密)的类。没生成一个用户实例后,处理密码类要对密码进行加密和解密。using System;using System.Collections.Generic;using System.Text;using System.Security.Cryptogra原创 2012-07-19 17:41:46 · 2678 阅读 · 2 评论 -
C#基础知识整理:基础知识(9) 接口的应用
前面接触过接口的概念,其实接口就是一组方法、属性,然后谁继承了它,谁就要实现这组方法和属性。也就是说这个类具备了这个接口定义的一些能力。 接口的这种特性在平常的程序编写中是有很大作用的,往往完成一个大项目需要很多人同时完成,这样难免会有一些类都需要某些方法,而且执行流程都差不多。这是在项目设计阶段就有必要把这种方法抽象出一个接口,然后在项目中,大家只需实现这个接口,从而防止大家由于各自定原创 2012-07-17 20:06:31 · 2509 阅读 · 1 评论 -
C#基础知识整理:基础知识(8) 接口
前面接触了抽象类,它的特点是子类必须实现abstract修饰的方法。以及还有virtual修饰的方法,virtual修饰的方法子类可以重写也可以不重写而直接使用。但是由于C#也是单继承的,所以定义一个父类,然后继承来扩展一些类的时候,会遇到不合适的情况。因为我们程序员是用程序语言来描述世界的,所以我们的工程中组织类,命名类,写方法等,最好和现实世界相似,这样开发起来才不费劲,修改bug的时候就比较原创 2012-07-06 20:21:03 · 2788 阅读 · 4 评论 -
C#基础知识整理:基础知识(7) 方法的隐藏
继承和抽象类中提到过,子类与父类的方法间有这些关系:子类直接使用父类方法(但是必须父类方法是public或protected类型);子类的方法覆盖父类方法(override);子类的方法重载父类方法(overload);看下面这种情况: public class YSchool { private int id = 0;原创 2012-06-28 17:24:44 · 2718 阅读 · 1 评论 -
C#基础知识整理:基础知识(6) 抽象类和抽象方法
在实际项目中,当我们设计一个父类时,经常会遇到这个类不能确定它的具体执行流程的。比如我设计一个文件类: public class AFile { private string name = string.Empty; private string path = string.Empty; private FileType原创 2012-06-26 19:08:14 · 3035 阅读 · 2 评论 -
C#基础知识整理:基础知识(5) 方法的重载
老师都有讲课这个方法,一个老师先是在西部偏远山区,是站在教室里木头的黑板前讲课;过了几年表现好,调到了稍微好点的城市里,是坐在教室前用多媒体设备讲课;又过了几年考博士了,毕业后继续当老师,不过现在是躺在家里对着电脑远程授课。都是讲课这个方法,不同的条件下(参数不同)有不同的执行过程和输出结果。这就是重载。重载的定义是:在同一个类中 ,或者是这个类的子类中,有若干个同名的方法就是重载,不过方法同原创 2012-06-26 11:35:13 · 3262 阅读 · 2 评论 -
C#基础知识整理:基础知识(4) 继承
前面提到过,面向对象的三大特性:封装性、继承性和多态性。封装在前面类的定义里也了解的差不多透彻了,现在看看继承的特性。继承实际是一个类对另一个类的扩展,后者称之为基类,前者称之为子类。继承就是子类拥有基类的一切属性和方法,子类还可以增加属性和方法。但是子类不能去掉父类的属性和方法。 当然这里还要提到修饰符的问题,子类拥有基类的所有属性和方法,不意味着子类可以任意访问继承的这些属性和方原创 2012-06-25 15:38:32 · 3138 阅读 · 2 评论 -
C#基础知识整理:基础知识(3) 类的构造
我们定义了YSchool,YTeacher类,实例化对象时: YSchool shool1 = new YSchool(); shool1.ID = 1; shool1.Name = "清华附中"; YSchool school2 = new YSchool();原创 2012-06-24 15:12:51 · 3363 阅读 · 3 评论 -
C#基础知识整理:基础知识(2) 类
类,是面向对象语言的基础。类的三大特性:封装、继承、多态。最基本的特性就是封装性。程序员用程序描述世界,将世界的所有事物都看成对象,怎么描述这个对象?那就是类了。也就是用类来封装对象。用书上的话说,类是具有相同属性和行为的对象的抽象。宝马汽车、别克汽车、五菱之光汽车... 基本具有相同的属性和行为,所以可以抽象一个汽车类,当然也可以把路人甲的宝马汽车、路人乙的别克汽车... 抽象一个汽车类。原创 2012-06-22 17:16:23 · 3994 阅读 · 2 评论 -
C#基础知识整理:基础知识(1) Main方法
千里之行始于足下,掌握某一项技能,都是要从最基本的东西开始。温故而知新,一件小事当你在不同的境遇,不同的时间下去做,总能获得意想不到的体验和收获。那么首先就从Main方法开始吧,//using关键字在该处的作用是引入一个“外部程序集”,System是微软提供的.net平台最基本程序集,所有.net程序都必须引用该程序集。using System;//命名空间,允许一个类属于一个命名原创 2012-06-22 11:27:09 · 4488 阅读 · 3 评论 -
C#基础知识整理:C#类和结构(4)
1、什么是接口? 功能特性? 实现代码? 接口就是使用interface关键字定义的,由类的成员的组合组成的,描述一些功能的一组规范。在C#中可以看到,系统的一些接口都是这样命名的:IComparable(类型的比较方法)、ICloneable(支持克隆)、IDisposable(释放资源)等等,I表示接口,able则反映了接口的特性:“能... ...”,表明这一组规范能干什么。(原创 2012-06-19 17:39:16 · 2966 阅读 · 2 评论 -
C#基础知识整理:C#类和结构(3)
1、静态类和静态成员有哪些功能特性? 实现代码? 静态类和静态成员是指使用static关键字定义的类或成员,凡是static类的成员一定是static成员,不然会报错的。静态类和成员的一大特点就是它们是独一无二的。如果是static类,那么它是不能实例化的,而且加载在内存中只有一个;如果是static变量,方法,这个类可以被实例化的话,无论实例化多少次,static变量或方法始终只有一个原创 2012-06-16 16:45:00 · 2904 阅读 · 2 评论 -
C#基础知识整理:C#类和结构(2)
1、什么是构造函数? 有哪些构造函数? 各个构造函数的定义、实现方法、注意事项?所谓构造函数,就是一个方法,这个方法可以初始化对象,即运行完这个函数后,内存总开辟了一块该类的对象的空间。有三种:正常的构造函数,也就是实例化构造函数;私有构造函数;静态构造函数。实例化构造器: public class Example { private string p原创 2012-06-15 11:32:36 · 3438 阅读 · 3 评论 -
C#基础知识整理:C#类和结构(1)
1、结构功能特性? 实现代码?结构用struct关键字定义的,与类类似,但有本质区别。结构实质是一个值类型,它不需要对分配的。结构的特性:(1)、结构作为参数传递时,是值传递。(2)、结构的构造函数必须带参数的。(3)、结构实例化可以不用new的。(4)、结构不能继承,但是可以实现接口。(5)、结构中不能初始化实例字段。例:using System;usin原创 2012-06-11 13:56:41 · 3700 阅读 · 3 评论 -
C#基础知识整理:C#基础(2)
(1)、显式转换和隐式转换如何区别? http://blog.csdn.net/yysyangyangyangshan/article/details/7494577(2)、值类型和引用类型区别? 值类型在堆栈存储它自己和它的内容;相对应的则是引用类型,在堆中存储一个引用,在另一地方存储内容。(3)、字符的 ASCII 码和 Unicode 码? http:/原创 2012-04-28 08:36:10 · 3182 阅读 · 0 评论 -
C#的隐式和显示类型转换
关于隐式转换和显示转换,每种语言都有的,C#中当然也不例外。一般常用到的场合,一种是写运算表达式的时候,要保持整体的数据类型一致和计算准确,比如有一个变量a是int型,但是它是通过加减乘除得到的,那么在运算中就要考虑用显示转换,除的运算需要转换成float或double,再把结果强制转换为int;再一个就是传参数的时候,需要注意哪些需要显示转换,或者对集合赋值的时候也要注意类型的问题。1. 隐原创 2012-04-24 17:02:58 · 15572 阅读 · 0 评论 -
C#基础知识整理:C#基础(1)
C#基本结构using System;using System.Collections.Generic;using System.Text;namespace ConsoleApplication1{ class MyFirstClass { static void Main(string[] args) {原创 2012-04-23 19:13:31 · 5927 阅读 · 2 评论 -
C#数据类型
C#的数据类型可以分为3类:数值类型,引用类型,指针类型。指针类型仅在不安全代码中使用。 值类型包括简单类型(如字符型,浮点型和整数型等),集合类型和结构型。引用类型包括类类型,接口类型,代表类型和数组类型。 值类型和引用类型的不同之处是值类型的变量值直接包含数据,而引用类型的变量把它们的引用存储在对象中。对于引用类型的变量,完全有可能让两个不同的变量引用同一个对象,这样一来,原创 2012-04-23 19:11:16 · 9397 阅读 · 4 评论 -
C#基础知识整理:.NET知识
1、什么是.NET Framework 所谓.NET FrameWork就是一个平台,它的目的是为了跨操作系统编程。它包含了很多模块,例如有windows应用程序构件,Web开发的模块等,而不同的操作系统根据自己的特性,支持其中部分模块。NET框架是采用虚拟机运行的编程平台,以通用语言运行时(Common Language Runtime)为基础,支持多种语言(C#、VB.NET、C++原创 2012-04-22 15:33:31 · 5694 阅读 · 0 评论 -
C#基础知识整理:写在前面的话
当我们还在学校的时候学的最多的东西是编程的基础知识,不论是C,C++,C#,Java等。当时我们并不能体会到学好那些语法有什么好处,不明白为什么计算1+1=2,还要去分析寄存器中放了什么,移除了什么,堆和栈如何变化的。不明白学总线,学编译原理干嘛。当时总想一口气做出一个软件来,认为这样才是学会了编程。 然后,后来我们离开学校了,开始编程了。这时我们还是菜鸟阶段,想的最多的还是如何写出一原创 2012-04-20 11:56:59 · 6130 阅读 · 13 评论