自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 string和StringBuilder

在之前我们简单的介绍了string字符串的一些操作方法,有一点要知道的是,当我们修改string字符串时,实质上我们是在堆内存里,重新开辟了一个内存空间,将修改完的字符串放进去,再引用到这块内存,旧的内存空间则被GC回收。如果我们需要频繁地修改字符串,那这种重复开辟内存的方法就会影响效率,所以我们有个StringBuilder类,也能够创建一个字符串,但是用法和string不同StringBuild

2017-09-28 10:31:59 234

原创 使用泛型来创建我们自己的列表

在前面我们知道在C#中有一个List类,可以存储长度不限的数据。列表是使用了泛型来创建的,那我们可以通过泛型来创建自己的一个列表,这样我们能够对泛型和列表有个更深刻的了解。首先,我们知道列表其实就是一个数组,只不过构造的时候不需要指定长度,那么我们首先要定义一个泛型数组和其中元素个数的变量。class MyList<T> where T:IComparable { priva

2017-09-27 10:40:46 331

原创 泛型

泛型是什么 泛型是程序设计语言的一种特性,它通过参数化类型来实现在同一份代码上操作多种数据类型。利用参数化类型将类型抽象化,从而实现灵活的复用泛型类 当定义一个类的时候,这个类的某些字段的类型可以是不确定的,这个类就叫做泛型类,这些类型可以在类构造的时候确定。 例如:class ClassA<T> { private T a; private T b;

2017-09-26 09:38:02 182

原创 泛型之列表的创建和使用

在前面,我们需要存储很多类型一样的数据的时候,我们一般都使用数组来存储并且管理,但是数组有个缺点就是数组的大小是固定的,那么当我们不确定数据的个数的时候,该怎么存储呢? 我们可以使用集合类来进行存储数据,列表List就是集合类的一种。我们可以使用列表很方便的添加、删除数据以及其他的操作。列表的创建 列表可以存储任何类型的数据,在创建列表对象的时候,我们首先要指定要创建的这个对象要存储什么类型的(

2017-09-25 22:18:14 571

原创 定义和实现接口

接口在继承中我们讲到了接口,那么如何去定义和实现一个接口呢?定义一个接口在语法上和定义一个抽象类完全相同,但是不允许提供接口中任何成员的实现方式。 语法规则定义接口(飞翔)public interface IFly{ public void Fly();}实现接口public class Type1Enemy:IFlyHandler{}如果有同时继承多个接口,那么就用逗号隔开接口名。

2017-09-25 20:10:09 4479

原创 派生类的构造方法以及修饰符的作用

派生类的构造方法在学习如何定义类的时候,我们学会了定义类之后如何使用构造方法来初始化对象。在继承关系中至少有两个类,那么是使用父类还是子类的构造方法来初始化对象呢?在子类中调用父类的默认构造方法(无参)public class MyDerivedClass{ public MyDerivedClass:base(){ //do something }}在这里base

2017-09-25 19:47:06 489

原创 抽象类与密封方法

抽象类在上一篇文章里,我们知道基类里的函数能够被重写,那么要是在一个程序里,他的函数在每个子类里全部都要被重写,该基类的函数可不可以不去实现,只定义一个函数呢? 我们可以定义一个抽象函数,抽象函数只有函数定义没有函数体,可以说抽象函数本身也是虚拟的virtual(只有函数,没有函数体实现)当一个类里有抽象函数的时候,这个类也必须是抽象类,抽象类不能实例化,但是抽象类可以同时有普通函数和抽象函数。

2017-09-25 17:27:37 345

原创 关于继承里的虚方法和隐藏方法

在继承里,我们知道子类拥有父类的方法,那么如果子类需要的方法和父类的有一些区别,想要修改一下要怎么做呢?C#里有两种重写的方法:虚方法和隐藏方法。虚方法 在基类中,将函数声明为virtual,这个函数就叫做虚方法,可以在任何派生类中重写该函数。该函数不能有private、static、abstract关键字。 语法规则class MyBaseClass{ public virtual s

2017-09-24 13:00:43 628

原创 面向对象编程-继承

继承在前面我们学习了如何去定义类,用类当做模板来声明我们的数据。那么当我们的程序需要很多个类,但是这些类有很多相似的字段和方法,我们也要一个个重新去定义吗? 我们可以使用继承,将相同的方法和字段放在一个基类里,有不同的字段或方法就写在派生类,继承基类。实现继承 表示一个类型派生于一个基类,它拥有该基类的所有成员字段和函数。在实现继承中,派生类型采用基类的每个函数的实现代码,除非在派生类的定义中指

2017-09-24 11:16:58 186

原创 匿名类型&&堆和栈

匿名类型在前面的代码中,我们创建变量(对象)的时候,都指定了变量的类型,但是我们也可以不去指定类型,这个就叫做匿名类型。我们可以使用var声明一个匿名类型,匿名类型初始化的时候,这个变量的类型就被确定下来了,并且之后不能够在被修改。static void Main(string[] args) { int i = 100; var j

2017-09-23 15:56:09 455

原创 面向对象编程-定义类

为什么使用面向对象编程?程序员为了让程序更加清晰,把程序中的功能进行模块化划分,每个模块提供特定的功能,而且每个模块都是孤立的,这种模块化编程提供了非常大的多样性,大大增加了重用代码的机会。面向对象编程也叫OOP编程。类类创建的变量叫做对象,实际上类是创建对象的模板,每个对象都包含数据,并提供了处理好访问数据的方法。类定义了类的每个对象(称为实例)可以包含什么数据和功能。那如何去创建一个类?clas

2017-09-22 17:37:59 612

原创 关于VS中的错误处理和调试

关于错误和调试的基本概念错误 语法错误:比如变量名错误等,导致编译器无法编译,编译器能够实时报错//语法错误,变量名出错 int temp = 235; tem = 43; 语义错误(逻辑错误):逻辑在某些方面有瑕疵,会导致结果和预想中的不一样,但是能够编译成功,编译器不会报错//逻辑错误,结果与预期的不同 int

2017-09-22 11:33:06 5584

原创 广义表与多重链表的概念

广义表广义表是线性表的推广。 对于线性表而言,n个元素都是基本的单元素,而在广义表中,这些元素不仅可以是单元素,也可以是另一个广义表。 通俗的讲,在广义表中的元素,也可以是一个线性表。 如何去定义一个广义表?typedef struct GNode{ int Tag; //标志域,0表示结点是单元素,1表示结点是广义表 union{ /

2017-09-20 10:29:55 2695

原创 函数的重载||委托类型的定义

函数的重载在类下面定义两个相同的函数,分别修改两个函数的返回类型和参数类型,这是函数重载的方法。static int MaxValue(params int[] array) { Console.WriteLine("这里是int方法"); int max = 0; for(int i = 1; i < arra

2017-09-17 21:21:20 363

原创 函数的定义与调用&&参数数组

函数的定义与调用一个最基础的C#程序结构是这样的using System;using ....;namespace xxx{ class Program { static void Main(string[] args) { } }}当我们要定义函数的时候,要在类下定义函数namespace xxx{ class

2017-09-17 17:00:34 1403

原创 线性表的顺序存储实现和链式存储实现

线性表是由同类型数据元素构成有序序列的线性结构,表中元素个数称为线性表的长度,线性表没有元素的时候称为空表,表起始位置称表头,结束位置称表尾。线性表有数据对象集和操作集 数据对象集:线性表是n个元素构成的有序序列 操作集:线性表L属于List,整数i表示位置,元素X属于ElementType线性表基本操作主要有 List MakeEmpty(): 初始化一个空线性表 Element

2017-09-09 10:01:05 839

原创 数组的遍历和字符串的操作

数组的遍历遍历数组有三种循环方式for循环int i = 0;int[] scores = { 12, 16, 2, 6, 7, 23, 7, 4, 7 };Console.WriteLine("for循环遍历数组");for(i = 0; i < scores.Length; i++){ Console.WriteLine(scores[i]);}while循环while

2017-09-08 14:03:01 2850

原创 数据的显式隐式转换以及枚举、结构体和数组

数据的显隐式转换显式转换又称为强制转换,是由数值范围大的数据类型转换成数值范围小的数据类型,之所以需要强制转换,是因为范围大的数据转换成范围小的数据的时候,可能会造成溢出,编译器无法通过。相对应的隐式转换则是由数值范围小的数据类型转换成数值范围大的数据类型,因为范围小,所以不用担心数值超出该数据类型的数值范围。byte myByte = 123;int myInt = myByte; //隐式转换

2017-09-08 13:49:58 819

原创 什么是数据结构和算法

什么是数据结构数据结构没有一个准确的定义。 数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。 ——百度百科 数据结构是数据对象,以及存在于该对象的实例和组成实 例的数据元素之间的各种联系。 ——《数据结构、算法与应用》数据结构的逻辑结构有四种:集合线性结构树形结构图形结构采用什么结构由数据的类型和数量决定,采用正确的结构才存

2017-09-08 11:05:24 340

转载 条件语句和循环语句

条件语句if语句有三种用法1.if(表达式){...}    //如果表达式的值为真,则执行括号内的复合语句2.if(表达式){语句1}else{语句2}         //如果表达式的值为真,则执行语句1,否则执行语句23.if(表达式){语句1}else if{语句2}else if{语句3}...else{语句m}        //如果

2017-09-02 11:30:37 5088

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除