C#基础知识.docx

上传人:b****8 文档编号:23849756 上传时间:2023-05-21 格式:DOCX 页数:22 大小:25.68KB
下载 相关 举报
C#基础知识.docx_第1页
第1页 / 共22页
C#基础知识.docx_第2页
第2页 / 共22页
C#基础知识.docx_第3页
第3页 / 共22页
C#基础知识.docx_第4页
第4页 / 共22页
C#基础知识.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

C#基础知识.docx

《C#基础知识.docx》由会员分享,可在线阅读,更多相关《C#基础知识.docx(22页珍藏版)》请在冰豆网上搜索。

C#基础知识.docx

C#基础知识

C#总复习

C#概述:

C#是一种源于C语言C++的高级编程语言。

是一种简单、功能强大、表达力丰富的全新语言。

集成于微软的.NETFarmework中,其核心原素之一是公共语言运行(commonlanguageruntime,CLR),后翻译成Microsoft中间语言(MSIL,简称IL),转化成本机代码。

一、语句、标示符、关键字

1、语句:

是程序的基本组成部分,程序就是各个语句一起组成的

c#的语句包括条件语句、循环语句、赋值语句、和执行任务语句等。

2、标示符的命名规则:

由数字、字母、下划线组成,首字母不能是数字,如果是关键字则在前面加上个@。

3、关键字:

AbstractAsBaseBoolFoolTrueBreakByteCaseCatchCharFloatintdoubledecimalstringgotoconstreturnoutcontinueifelselongshortvoidwhilepublic等

4、数据类型:

变量与常量

变量:

在程序随时变的值,程序中数据暂时存放的场所。

使用第一步声明规则变量的类型与名字。

二步、赋值也叫初始化。

(可以两步也可以一步)

例如:

inta=1;也可以是inta;a=1;

常量:

在前加一个const关键字其它的和变量一样。

(注:

必须在声明时初始化。

总是静态的,易于避免错误,易于修改。

数据类型分为值类型、引用类型

值类型包括:

整型、浮点类型、字符类型、和布尔类型

整型:

intsbyteshortlong

浮点类型:

float(赋值时数字后要加上F)doubledecimal(赋值时数字后也要加上M)(更高精度的浮点数)

字符类型:

char

有需要转义的\'单引号\"双引号\\反斜杠\0空\a警告\b退格\f换页\n换行\t水平退格\v垂直\r回车

布尔类型bool:

truefalse

引用类型:

(保留有堆上)

object类型string类型:

为字符串

类型的转化:

隐式转换是由精度大的转换成精度小的

显式转换(强制性类型转换)intc;c=(int)3.22;会引起信息丢失。

ToString()是将变量转换成字符串类型的方法。

例子:

Convert.ToString()就是转换成字符串,还可以用Int.Parse();

注:

如果是转换float则用ToSingle

隐形局部变量:

不用声明类型

前加一个关键字var例如:

varname="张三";

ReadLine()Read()WriteLine()Write()等方法

5、拆箱与装箱:

拆箱是把值类型转换成一个object引用类型,放在堆上inti=10;objectobj=i;intj=(int)obj;

装箱是把object引用类型转换成一个值类型inti=10;objectobj=i;

1.装箱在值类型向引用类型转换时发生

2.拆箱在引用类型向值类型转换时发生

object obj=1;

这行语句将整型常量1赋给object类型的变量obj;众所周知常量1是值类型,值类型是要放在栈上的,而object是引用类型,它需要放在堆上;要把值类型放在堆上就需要执行一次装箱操作。

object objValue=4;

int value=(int)objValue;

上面的两行代码会执行一次装箱操作将整形数字常量4装箱成引用类型object变量objValue;然后又执行一次拆箱操作,将存储到堆上的引用变量objValue存储到局部整形值类型变量value中。

6、运算符和表达式

表达式是由变量、常量、和运算符(+-*/等)组成

三种运算符:

一元运算符:

作用于一个运算数。

x++(先使用后增加);++x(先增加后使用);x--;--x;

二元运算符:

作用于二个运算数。

z=x+y;

三元运算符:

只有一个"?

:

"作用于三个运算符y=a

a:

b;如果条件是就选a,不是就b

算术运算符:

+-*/%(b)

复合赋值:

x+=y;//x=x+yx-=y;//x=x-y……

关系运算符:

==等于,!

=不等于,<等小于,>等大于,<=小于或等于,>=大于或等于

逻辑运算符:

&&逻辑与||逻辑或!

逻辑非

运算符的优先级别

()的>一元运算符(++a,a++,逻辑运算符)>算术运算符(*,/,%,》+-)>关系运算符()

二、结构化程序(顺序结构、选择结构、循环结构)

程序设计的步骤:

1、顺序:

由上而下进行的程序

结构图:

Console.WriteLine("还不错哟");

Console.Write("这是好的?

");

2、选择:

if-else:

结构图:

if(a>b)//括号内的是条件

{console.write("这是对的");}

else{console.write("不对了");}

switch:

结构图:

switch(表达式)

{case常量表达式1:

要执行的语句1break;

case常量表达式2:

要执行的语句1break;

case常量表达式3:

要执行的语句1break;//跳出

default:

其余情况的条件break;

}

三元运算符:

console.write(dout1

dout1:

dout2;);//如果dout1

3、循环:

分为forforeachwhiledo-while三大循环是重点

结构图:

for①

for(条件)判断条件后执行

{执行体}

经典例子:

for(inti=0;i<128;i++)

{Console.Write("{0}",Convert.ToChar(i));

}

while②

while(条件)先判断后执行

{执行体}

do-while③

do{执行体}

while(条件)先执行后判断

foreach

foreach(数据类型标识符in表达式)

{

循环体

}。

例子:

假设一个类对象Person实例Listperson=newList();

foreach(variteminperson)

{

循环体

}。

跳转语句:

Break立即终止循环的

Continue立即终止当前的循环(执行下一循环)

Goto无条件跳转,可以跳出循环并跳转到标记了的代码位置上。

//exc:

定义一个标记用方式gotoexc;

Return跳出循环以及方法

int,也可以是用户自定义类型

三、数组:

就是一组具有相同类型和名称的变量的有序集合。

结构图:

静态初始化:

int[]mydate={6,7,8};

动态初始化:

int[]mydate=newint[3];数据类型[]数组名称=new数据类型[数组长度];

经典初始化40个学生的成绩:

for(inti=0;i<40;i++)

{str[i]=Convert.ToSingle(Console.ReadLine());

}

注:

每个数组中的元素的下标从0开始。

没有赋值情况下使用如果数据类型为整型或浮点型,其默认值为0;如果数据类型为布尔类型时,默认值为false;当数据类型为字符类型时,默认值为空(null).

1、数组的清空:

结构图:

Array.Clear(mydate,3,6);//调用基类中的清空方法,3是清空元素起始下标,6是清空元素的个数。

2、数组的查找:

intdata=Array.IndexOf(mydate,17);//调用IndexOF()方法,需要指定查找的数组以及要查找的值,并将找得到的值赋给变量data(为索引其下标).

intdata=Array.LastIndexOf(mydate,17);//调用LastIndexOf()方法,需要指定查找的数组以及要查找的值,并将找得到的值赋给变量data.

排序的几种:

Array.Sort(mydata);//调用正向排序(即是由小到大的排序),mydata这是数组名称

Array.Reverse(mydata);//调用反向排序(即是由大到小的排序),mydata这是数组名称

 泛型集合

数组区别:

最显著的区别为:

数组一旦初始化后,数组元素的数量不能再改变;而List是集合,集合元素的数量可以动态变化。

 主要利用System.Collections.Generic命名空间下面的List泛型类创建集合

ListListOfT=newList();中的"T"就是所要使用的类型,既可以是简单类型,如string、

String的常用用法

1:

Format参数化处理,相当于Console.WriteLine();

    stringstr=String.Format("今天{0}很热","天气");//str="今天天气很热";

2:

NullOrEmpty判断字符是否为null或者为空,返回值为bool;

    stringstr1="hahha";    

    boolb1=string.IsNullOrEmpty(str);//b1=false;

3:

Join字符串的合并

    string.Join(stringstr,string[]strArr);//将数组strArr中的内容拼接成一个新的字符串,并在对应数组的每两项间添加分隔符str

    stringstrs=string.Join(",",string[]{"w","e","r","t"});//strs="w,e,r,t";

4:

Contains判断字符串中是否包含某个字符,返回bool值。

    stringstr="好累呀";

    bool b=str.Contains("累");//b=true;

5:

EndsWith和StartsWith 判断是否是已某种字符串开始或者结束

    stringstr="好大的雨呀";

    bool b1=str.StartsWith("大");//b1=false;

    bool b2-str.EndsWith("呀");//b2=true;

IndexOf和LastIndexOf 判断字符串第一次出现(IndexOf)和最后一次出现(LastIndexOf )的位置,如果没有出现过则返回值为-1

    stringstr="今天的雨很大,天很冷";

    inti=str.IndexOf("很");//i=4;

    inti=str.LastIndexOf("很");//j=8;

    intm=str.IndexOf("小");//m=-1;

  6:

Replace字符串(字符也是可以的)替换,返回新的字符串

    stringstr="好困呀";

    strings=str.Replace("困","精神");//s="好精神呀";

   7:

Insert插入

    在字符串的index位置上插入字符,原来的字符依次后移,变成一个新的字符串

    stringstr="夜深了";

    strings=str.Insert(1,"已经");// s="夜已经深了"

  7、Remove删除字符串(字符)

    在字符串中移除从startIndex开始,长度为length的字符串,剩下的字符合为一个新的字符串(=.Remove(startIndex,length);)

    stringstr="夜已经深了";

    strings=str.Remove(1,2);//s="夜深了";

  8:

Split 将字符串以sep数组中的字符分割,分割后得到的内容存到一个数组中(string[].Split(paramschar[]sep);)

    stringstr="我,真的、好困;呀";

    string[]s=str.Split(newchar(){',','、',';'});//s=string[]{"我","真的","好困","呀"};

  9:

Substring截取字符以index开始截取,并截取lenth个字符(string.Substring(index,lenth))

    stringstr="还在下雨";

    strings=str.Substring(2,2);//s="下雨";

  10:

ToCharArray将字符串转化为字符数组(.ToCharArray())

     stringstr="雨已经小了";

     char[]s=str.ToCharArray();//s=char[]{'雨',"已","经","小","了"};

  11:

Trim()出去两边的空格

     stringstr=" dd ";

     strings=str.Trim();//s="dd";

  12:

ToUpper(转换为大写)和ToLower(转换为小写)

     strings="RaSer";

     strings1=s.ToUpper();//s1="RASER";

     strings2=s.ToLower();//s2="raser";

    

四、面向对象(OOP)

思想:

将数据及处理这些数据的操作都封装到一个称为类的(class)的数据结构中,使用这个类时只需要定义一个变量就行了。

结构图:

现实世界计算机语言

事物状态属性

行为方法(函数)

类:

就是包括了两个部分:

属性与方法

定义:

具有相同属性和服务的一组对象的集合。

声明类(类和变量一样也是一种数据类型)用的关键字是class

(修饰符)(关键字)(类名)(继承方式)(基类名)

{类成员(变量、常量、方法、属性、事件、索引器、定义);}

修饰符有public公众的任何类都可以后访问private私有的(默认的)类和方法只对本类里面的方法可见

protected受保护的本类可以访问和继承本类的子类可以访问internal内部的就是在同一命名空间下可以访问

protectedinternal继承的子类可以继承

如果是静态的则直接的用类名加上个成员即可

是实例的则用初始化一个对象,用对象名加上个成员名。

对象:

就是将算法与数据结构看做一个整体的,算法就是解决问题的方法,数据结构就是事物中各个属性之间的联系和组织形式。

对象的声明与访问:

属性与字段

属性与字段对比:

相同点:

都可以输入信息,可以给对象指定一个状态,来把对象的信息给描述出来。

不同点:

属性:

不能直接访问数据,就是该对象的状态,还能保证数据安全。

字段:

类一级的成员包括一些定义、常量、变量

方法:

就是对象的函数,可以处理一些问题,解决方法等。

对象=算法+数据结构

程序=对象+对象……+对象

五、属性

属性:

只写一个例子吧

privateintage;

publicintAge

{

get{returnage;//拿出去}如果只有它则是只读的

set{age=value;//放进去}如果只有它而没有上个则它是只写的

}

方法:

方法是一种用于实现可以由对象或类执行的计算或操作的成员.就是动作的实现,而属性则只是状态.

格式为:

访问级别(访问修饰符)返回类型方法名称(参数列表)

{方法体}

返回类型包括:

void(无返回值)intstringdouble等

方法在定义的时候,小括号里的参数为形式参数,而实参数为调用时主方法里的参数。

包括有四种:

1、无参无返回值

调用则是:

p.add();

2、无参有返回值

Console.WriteLine(p.add());

3、有参无返回值

p.add(8);

4、有参有返回值

需要实例化后格式

Programp=newProgram();

Console.WriteLing("结果是:

"+p.add(2,5));

也就是说无返回值的时候则直接调用其方法就能使用了,而有返回值时则先调用后输出了。

传递参数时:

包括值类型传递、引用类型传递、输出参数、参数数组

1、值类型传递:

是单向传递的过程,实参传递给形参,形参的改变不影响实参。

2、引用类型传递:

可修改的,前面要加上一个ref。

传的是地址,双向传递,形参的改变影响实参的结果。

不过引用类型在定义和调用时前都要加上一个ref

3、输出参数:

在参数前加一个out,就可以多设置一个输出参数。

4、参数数组:

必须用params修饰词明确指定。

数组名做为参数在传递相当于数组的起始地址,形参影响实参。

构造函数与析构函数:

主要用来对对象的初始化的回收对象资源。

一般一个函数的生命周期是从构造函数开始初始化后到析构函数销毁程序占用的资源。

构造函数:

用来为对象分配存空间,完成初始化操作。

特点:

1、构造函数的名称一定要的类名一样。

2、当类没有构造函数时系统会默认为其加上构造函数。

3、不用声明返回值类型,可以有参也可以没参数。

析构函数:

名称和构造函数一样,但是在名称前要加上一个波浪线(~)

特点:

没有修饰符、不能带参数会被自动调用。

重载:

是指调用同一种方法名,但是使用不同数据类型的参数或不同的次序或数量不同的也行。

可以实现代码的重用性。

条件:

1、方法名相同时。

2、方法的参数类型、个数、顺序到至少有一个不相同。

3、返回值可以不相同,但是只有类型不同是不可以的。

4、

修饰符可以不相同,但是只有修饰符不同是不可以的。

Main函数:

是程序的入口,且第一个程序只能有一个入口,。

分部类:

定义分部类的时候要用到partial关键字,分部类里第一个部分都必须包含一个partial关键字,并且其声明必须与其它部分位于同一个命名空

间下。

六、面向对象的特性

封装:

就是定义好个正确的类就是所谓的封装。

可以保证数据的安全性。

继承:

就是实现传递性,可以提高对象的重用性。

在C#中类的继承只支持单继承。

就是中允许继承一个类。

但是接口允许多继承。

且不能继承私有的。

继承后,派生类可以使用基类中的允许的数据了。

多态:

有四种方法可以实现多态:

1、重载

2、继承

3、重写注:

重写方法只能用于重写基类中的虚方法。

4、接口

注:

继承、虚方法、和重写方法组合在一起才能实现多态。

七、结构

结构是几个数据组成的数据结构,结构内存放一系列不同类型的变量。

结构格式:

修饰符合结构修饰符struct结构名

{}

结构是一种值类型,而类则是一种引用类型。

包括:

通常封装一组相关变量,可包括构造函数、常量、变量、字段、方法、属性等。

特点:

1、是值类型

2、结构实例化可不用new关键字

3、结构可以声明构造函数,但是必带参数。

4、结构可以实现接口。

5、不能初始化实例字段。

用处:

数据少时用,简便,如果成员多时则直接用类。

结构类的比较:

不同点:

1、结构是值类型,而类则是引用类型。

结构类型的变量包含此结构的数据,而不是像类类型那样包含对数据的引用。

2、结构使用堆栈分配,类使用堆的分配。

3、所有结构元素默认为public;类变量和常数默认为private(私有的)。

4、结构不能继承,而类则非常可以。

5、结构变量声明不能指定初始值设定项或数组的初始大小,而类变量声明则可以。

相同点:

1、都是属于容器类型的,可以包含其它的成员形式存在类型。

2、都具有成员,成员可包括构造函数、方法、属性、字段、常量、枚举、事件、和事件处理程序。

3、都可以实现接口。

八、接口

结构格式:

修饰符合interface接口名称:

继承的接口列表

{接口内容}

接口可以实现多重继承。

实现接口或类要与接口的定义严格一致。

而且可以继承多个接口。

要实现接口成员是公共的、实例的,并且与接口

成员具有相同的名称和签名。

¥¥类的属性和索引器可以为接口上定义的属性或索引器定义额外的访问器。

例子:

publicinterfacejiekou

{intMaa(intj,intk);//接口成员为(虚方法)}//接口是一个想法,而不是一个实体,最终的实现只能是类来实现。

下面是类的实现:

publicclassq:

jiekou

{

publicintMaa(intj,intk)

{returnj+k;}

}

调用:

staticvoidMain()

{jiekouc1=newq();//相当于jiekouc1=(jiekou)newq;将类的实例强制转换为接口对象,前面为虚的,后面是实的

Console.Write(c1.Maa(3,4));

}

还可以实现多个接口,而类继承后需要实现接口中的所有成员。

注:

接口只是一个想法,所以其成员一定要是虚的,不是具体实现。

抽象类和抽象方法

抽象类结构格式:

访问修饰符(public)关键字(abstract)class类名(mydata):

基类或接口

{//类成员}

例子:

publicabstractclassmyclass

{publicabstractvoidmethed();//抽象方法而不用肩括号的}

注:

抽象方法只能在抽象类中定义。

由一个抽象类转化为一个非抽象类时需要重写抽象方法用(override)方法

密封类与密封方法:

作用:

就是为了防止对继承的滥用,所以其它类不能从密封类中继承,但是它却可以继承另的基类。

语法格式:

访问修饰符sealedclass类名:

基类或接口

{//类成员}

由于其不可继承性,因此密封类不能声明为抽象的,即sealed不能与abstract修饰符同时使用。

密封方法的使用:

密封并重写基类中的虚方法时,用到了base.方法名();的语句,这是先调用基类中的方法。

比较接口与抽象类

1、抽象类可以包括字段、构造函数、析构函数、静态成员或常量等,但是接口中不可以。

九、枚举

枚举类型是一种特殊的值类型,它用于声明一组具有相同性质的常量,编写日期相关的应用程序时可以用到。

用enum来创建

enum类名

{}默认第一个枚举值为0

十、异常处理、错误类型、程序调试

一般用

try{}……catch{}语句

throw语句一般与上面的try{throw……}catch{}联用

结构图:

T委托:

声明一个委托,该委托拥有一个只有一个字符串类型的参数且没有返回值的方法

publicdelegatevoidDel(stringmessage);

//定义预委托的方法,该方法可以是静态的和实例的,只要预委托方法与委托具有相同的签//名即可

Publicv

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1