C#语言基础

来源:互联网 发布:imax影片数据 编辑:程序博客网 时间:2024/04/29 22:39

C#语言基础

1 .NET的框架(Framework):是整个开发平台的基础,包括公共语言运行库.NET类库

2.C#的数据类型

按数据的存储方式划分,有值类型和引用类型. 

值类型:(值类型变量存储数据

Int  long float double decimal enum strut

引用类型:(存储对实际数据的引用

Object string  class interface delegate

3.基本编码规则:

首先要提出的是C#语言大小写是敏感的,大型程序的开发必须有通用的编码规则。

标准化的编码规范有助于理解代码的意义以及如何使用和改进代码

编码规范使项目成员可以读懂并理解其他开发人员编写的代码

编码规范可以提高软件的可维护性

编码规范使所有开发人员都采用一致的编码风格

结构的成员和单独的变量,如变量和常量等采用Camel 风格的命名  totalValue,

数据结构如类、接口和枚举等采用 Pascal 风格的命名。WelcomeClass OnClick

在程序的关键地方要加注释进行说明。  //  /* */

4、C#的语句:

选择语句 (if else;switch case)

选择语句依据一个控制表达式的计算值从一系列可能被执行的语句选择出要执行的语句。说明:逻辑表达式必须是布尔型。

(1)if语句格式如下:

 if (条件 2)

语句组 1;}

else

{   语句组 2;}

(2) Switch 语句

分支语句依据控制表达式的值选择执行相关的语句。其格式如下:

switch (choice)

{case value1: 

   <语句组 1>

   break;

case value2: 

   <语句组 2>

   break;

default : 

<语句组 n>}

循环控制(do ;while ;for;foreach)

(1)while依据其表达式的值条件执行它的嵌套语句零次或者多次

(2)do语句

do语句根据其布尔表达式的值有条件的执行它的嵌套语句一次或者多次

(3)for语句

for语句首先计算一系列初始表达式的值,接下来当条件成立时,执行其嵌套语句,之后计算重复表达式的值并根据其值决定下一步的操作.

(4)foreach语句

说明:此语句使用户在数组和集合中迭代元素。

int[] arr1=new int[5] {1,2,3,4,5};

   foreach(int i in arr1)

   Console.WriteLine(Value is {0},i);

跳转语句(break语句 continue语句 goto语句 return语句)

(1)break语句  退出最内层的循环或者退出一个switch语句

 (2)continue语句  开始循环的一次新迭代

 (3)goto 语句

(4)return语句  指定函数返回的值当执行return语句时,即使函数主体中还有其他语句,函数执行也会停止!

 

 

例1. switch (n)

        {

            case 1:

                cost += 25;

                break;

            case 2:

                cost += 25;

                goto case 1;

            case 3:

                cost += 50;

                goto Finish;

            default:

                Console.WriteLine("Invalid selection.");

                break;

        }

    Finish:

        Console.WriteLine("End of search.");

 

例2.for (int i = 1; i <= 10; i++)

        {

            if (i < 9)

            {

                continue;

            }

            Console.WriteLine(i);

        }

for(int i=1;i<=10;i++)  

if(i==6)

{ break; } 

Console.write(i); 

 

5.命名空间

     将相关的类型进行分组的逻辑命名方案。利用关键字namespace定义命名空间,System是根命名空间。

6. 标识符和保留字

标识符以字母,下划线或@开头。后跟字母,下划线,数字

保留字:如const定义常量,base用于访问父类的公有和保护成员,一定使用保留字做标识符,应以@开头。

 

7.字符串类型:i

字符串的建立:可以通过直接赋值建立字符串  如:string str=hello;

string str=c:\\text\\first.cs;或者三string str=@c:\text\first.cs;

⊙常用字符串操作方法

1)比较字符串 

String.compare(string strA,sting strB)

2)查找t

Indexof(string str)可以查找str在字符串中出现的位置;

lastIndexof(string str)可以查找str在字符串中最后一次出现的位置

3)插入:Insert(int startindex,string str);

4)删除:Remove(int startindex,int count);

5)替换:Replace(string oldstr,string newstr);

6)大小写转换   Toupper()可以将所有的英文字母转化成大写的Lowupper()可以将所有的英文字母转化成小写的。

7)trimstart()可以删除字符串首部空格,trimend()可以删除字符串尾部空格,trime()可以删除字符串首尾部 的空格

8.数组

1)数组的声明:

int[] numbers;//一维数组的声明

Int[,] names;//多维数组的声明

Byte[][] scores;//数组的数组(交错的)

2)创建数组

Int[] numbers=new int[5];//一维数组

string[,] names=new sting [2,3]//多维数组

Byte[][] scores=new byte[5][]//数组的数组

3).初始化数组

Int[] numbers=new int[5]{1,2,3,4,5};

string[] names=new sting [3]{zhao , qian  sun };

9.类型转换

一、隐式转换与显示转换

1.隐式转换

隐式转换是系统默认的,不必加说明就可以进行的转换

2.显示转换

  Parse   convert  a.tostring()  (int)a

   显示转换又叫强制转换,与隐式转换不同的是,显示转换需要指明要转换的类

 二、数值与字符串的转换

1、数值转字符串

2、字符串转数值

 三、装箱与拆箱

装箱转换是指隐式地将任何值类型转换成object类型。

拆箱转换是把object类型显示地转换为值类型,它是装箱的逆过程。

例如

int nfunny=2000;

Object ofunny=nfunny;

 

Int n;

Object ofunny=2000;

Int n=(int)ofunny;

10、异常处理

1、格式:

try

{//程序代码}

catch(异常类型声明)

{//错误处理代码}

catch(异常类型声明)

{//错误处理代码}

finally

{//finally 代码

}

2、抛出异常:

除了在程序运行时处理异常外,在一些特殊的情况下,还可能使用throw关键字显示地抛出异常。

格式:  throw new 系统异常或用户自定义异常

系统常用的异常分类:

System.DivideByZeroException()

System.FormatException();

System.IO .IOException()

System.IO.FileNotFoundException()

System.IndexOutOfRangeException();

3、异常说明

程序逻辑是在 try 块中编写的,而错误处理代码是在 catch 块中编写的; 

如果需要在 try 块中捕捉多个异常,则必须具有多个 catch 块;

提供一个可选的 finally 块。无论是否产生异常,都执行此块中的语句; 

throw 语句可用来抛出系统异常或用户自定义异常(也称为自定义异常);  

用户自定义异常有助于在程序执行期间抛出特定于应用程序的异常。

 

类与对象

面向对象的程序设计既是一种程序设计模式,也是一种软件设计的方法学.它的主要思想是根据对象的类一一构造程序,它包含了对象消息等一些重要概念和封装性继承性多态性等重要特性。

一、 对象(万事万物皆对象)

对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。一个对象由一组属性和对这组属性进行操作的一组服务组成,通俗地讲类的对象是该类的某一特定实体,即类类型的变量。

二、 类(面向具象写抽象,利用抽象写具象)

类是具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。

三、 类与对象的关系:

类的实例化结果就是对象,而对一类对象的抽象就是类。通过类来建立对象,对象之间通过消息进行通信。(模具与产品)

四、 面向对象的基本特征

1、 封装性

      封装性就是把对象的属性和服务结合成一个独立的单位,并尽可能隐蔽对象的内部细节。(自动提款机)

2、 继承性

特殊类拥有其一般类的全部属性和服务,称为特殊类对一般类的继承。

允许重用现有类去创建新类的特性,增加程序代码的可重用性。

3、 多态性

多态性是指在一般类中定义的属性或服务被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。

类和对象的知识重点。

1. 类的成员分类:

数据成员:字段、常量、事件。

成员函数:属性、索引器、构造函数、析构函数、运算实例化方法、事件

2. 类成员访问修饰符有:

1) public :访问不受限

2) protected:只限此类和继承类使用

3) internal:仅限当前程序集

4) private:只在此类中使用,访问数据要用属性

3、静态成员和非静态成员的区别

利用static修饰的数据或者方法成员,称为静态成员,否则为非静态成员

静态成员的引用直接利用类名,而非静态成员的必须经类的实例化后方可引用

4、 构造函数:public +类名

作用:构造函数主要用来为对象分配空间,完成初始化操作

构造函数 与类名相同,无任何返回值,在类的实例化时直接可以调用,指定其初始化

public circle()        {this.r=100;}

特殊情况举例:

1. public A(){}

2. public A(int a,string b.){this.a=a;this.b=b.}

3.public A(int a,string b.):base(a){}

4.public A(int a,string b.):this(0,2)//通过关键字this调用同一个类的另一个构造函数

 

下列关于构造函数的描述正确的是________
A.构造函数可以声明返回类型     B.构造函数可以用private修饰 
C.构造函数不可以重载           D.构造函数可以带参数

 

5、 析构函数:用于释放类的实力获取的资源占用的内存 ,定义方法~类名()

类中的析构函数完成释放对象,与类名相同,无任何返回值。

6、类的方法

 在c#中,数据和操作均封装在类中,数据以成员的变量的形式出现,而操作(服务)主要体现在方法的使用上。在类的定义中,类的方法描述了该类的行为特征。

在类中,方法的一般格式是:

[修饰符] 返回值类型 方法名 ([参数列表])

{方法体}

方法的参数传递

通过值传递参数

通过引用传递参数(ref  out

例:public class TestClass

    { public void Display1(int x)

        { x=x-8;}

        public void Display2(ref int x)                  运行结果:

        { x=x+10;}

        public void Display3(out  int x)

        { x=x+1;}}

    class Program

    { static void Main(string[] args)

        {   int a = 10;

            TestClass t=new TestClass ();

            t.Display1(a);

            Console.WriteLine(a);

            t.Display2(ref a);

            Console.WriteLine(a);

            t.Display3(out a);

            Console.WriteLine(a);}}

 

7.方法重载

 定义:类中两个以上的方法(包括隐藏的、继承而来的方法)所取的名字相同,只要使用的参数类型或者参数个数不同,编译器便知道在何种情况下应该调用哪个方法。这就叫做方法的重载。

8 this关键字

this关键字引用类的当前对象,成员通过this关键字可以知道自己属于哪一个实例,this关键字是一个隐含引用,它隐含与每个类的成员函数中,可以用于从构造函数、实例方法和实例访问器中访问成员。

public A(int a,string b.):this(0,2)

//通过关键字this调用同一个类的另一个构造函数

9. 属性

属性定义: 是对现实世界中的实体特征地抽象,他提供了一种对类或对象特征进行访问的机制,例如字体、颜色、标题都可以作为属性。属性所描述的 是状态信息,在类的某个实例中,属性的值表示该对象的状态值,与域相比属性具有良好的封装性。属性不允许直接操作数据内容,而是通过访问器进行访问。这种机制可以把读取和写入对象的某些特征与一些操作关联起来,甚至他们还可以对此特征进行计算。

   给属性赋值时使用访问器set,set访问器始终使用value设置属性值。获取属性值时使用访问器get,get通过return返回属性值。在访问声明中如果只有get访问器,表示只读属性,如果只有set访问器,表示只写属性,有get和set访问器表示可读可写属性。

  属性格式是:

访问修饰符 属性类型 属性名{

get{ }set{ }

}

面向对象的继承与多态

1、继承

继承是面向对象程序设计的一个重要特征,它允许在现有类的基础上创建新类,新类从现有类中继承类成员,从而形成类的层次或等级。一般称被继承的类为基类或父类,而继承后产生的类为派生类或子类。

(1) C#中只支持单一继承,object类型是所有类的基类。

(2) 继承是可传递的,如果CB派生,而BA派生,那么C就会既继承在B中声明的成员,又继承在A中声明的成员。

(3) 派生类扩展它的直接基类,派生类可以向它继承的成员添加新成员,但是它不能移除继承成员的定义。

(4) 实例构造函数、静态构造函数和析构函数是不可继承的,但所有其他成员是可继承的,无论它们所声明的可访问性如何,根据它们所声明的可访问性,有些继承成员在派生类中可能是无法访问的。

(5) 派生类可以通过声明具有相同名称或签名的新成员来隐藏那个被继承的成员,但是,请注意隐藏成员并不移除新成员,它只是使被隐藏的成员在派生类中不可直接访问。

*派生类的声明

类修饰符 class 派生类类名基类类名{类体}

2、多态性

是指不同的对象收到相同的消息时,会产生不同的动作,而产生一个接口多个方法。它允许以相识的方式对待所有的派生类,尽管这些派生类是各不相同的

C#多态性包括:

编译时的多态性(静态多态):是通过重载类实现的,系统在编译时,根据传递的参数、类型信息决定 实现何种操作。包括:

方法的重载(方法的名字相同,参数类型不同或者参数的个数不同)

*运算符的重载

运行时的多态(动态多态):根据实际情况决定实现何种操作,通过虚函数实现。虚方法重载要求方法名称。返回值类型,参数表中的参数个数 ,类型顺序都必须与基类中的虚函数完全一致

在派生的类中声明对虚方法的重载要求在声明中加上override关键字,而不能有new,static,virtual

 

                                  方法重载:函数参数不同和函数个数不同

                   编译时的多态

                                  运算符重载

C#的多态

 

                   运行时的多态:通过虚函数实现

3、 运算符重载

运算符是c#中的重要成员。系统对大部分成员都给出了常规定义,这些定义大部分和现实生活中的运算符的意义相同,可以根据需要给这些运算符赋予一个新的含义,这就是运算符的重载。

格式如下:

返回值类型 operator 运算符(运算对象列表)

{

重载的实现部分;

}

 

4.密封类:在类名前加上sealed,此类为不能继承的类

5.抽象类:创建一个类,该类中包含不提供具体实现的方法,但在派生类中必须实现的方法叫做抽象方法,含有抽象方法的类叫做抽象类,抽象类包含非抽象方法。抽像类是虚拟可用的。

抽象方法表示方法:[访问修饰符]abstract返回类型 方法名{}

抽象类表示方法:[访问修饰符]abstract 类名{}

6、抽象的方法与虚方法的区别:

1)虚方法在基类中可以有实现,但抽象方法不能。

2)虚方法可以在子类中不实现,但抽象方法必须在子类中全部实现。

3)如果类中有一个抽象方法,这个类就是抽象类,不可以实例化对象。

 

7.接口

接口是把所需成员组合起来,以封装一定功能的集合,它是纯抽象类,只能包含抽象方法,而且不包含已实现的方法。

接口声明:[访问修饰符] interface 接口名[:基接口]

8.抽象类和接口的不同点

1)一个抽象类必须至少包含一个抽象方法,可以包含具体 的方法,接口的方法必须都是抽象的,即不能实现;

2)一个类继承一个抽象类,必须实现抽象方法,一个类要实现接口,她必须能够具体实现该接口包含的所有方法定义

3)抽象类只能实现单继承,利用接口实现多继承

.9委托

定义:是一种引用数据类型,都是从system.Delegate继承而来

Delegate声明,类似于函数指针,但没有函数体、

委托声明:

public delegate 函数返回值 委托名 (参数列表)

使用;委托名 委托变量=new 委托名(所指参数名即方法)

10事件  (三大因素:事件源、侦听器、事件处理程序)

定义:是类发生其关注 的事件用来提供通知的一种方式,事件是通过一种叫做委托机制来实现的.

事件的声明格式:

[修饰符]event 与事件相关联的委托事件名

Windows应用程序与ADO.NET

一、建立GUI应用程序的一般步骤

1、建立Windows应用程序;

2、设计应用程序界面;

3、设置窗口与控件的属性;

4、编写事件方法代码;

二、Console类的常用属性、方法、事件

属性

方法

事件

Name

Focus()

Click

Text   TabIndex

Hide()

GotFocus

Enabled    Visible

Show()

LostFocus

ForeColor BackColor

 

Move

 

 

 

三、常用控件的属性、方法、事件

1、单选与复选按钮

属性

说明

Checked

单选与复选按钮是否被选择(true/false)

方法

说明

Show

 

Select

用于选取组合框控件可编辑区显示的所有文本

事件

说明

CheckedChanged

单选与复选按钮选项改变时将触发

2、列表框:

属性

说明

Items

用于查看列表框中的项目。

MultiColumn

该属性的值决定列表框是否有多列。

SelectedIndex

表示当前选定项目的索引号。列表框中的每个项目都赋有一个索引号,从 0 开始。

SelectedItem

获取当前选定项目的值。

SelectedItems

获取所有当前选定项目的值。

SelectedValue

表示当前选定项目的值。

Sorted

决定列表框中的项目是否已排序。

Text

表示当前选定项目的文本。

3、组合框:

DropDownStyle

表示组合框控件的样式。不同的样式包括 Simple(直铺式)、DropDownList(下拉列表式)和 DropDown(下拉式)。DropDown 是默认样式

Focused

该属性的值表明组合框是否有焦点。

MaxDropDownItems

表示单击控件的向下箭头时下拉区显示的最大项目数

方法

说明

Select

用于在组合框控件上选定指定范围的文本

SelectAll

用于选取组合框控件可编辑区显示的所有文本

事件

说明

DropDown

组合框中的项目可见(即它们以下拉列表格式显示)时将触发

ADO.NET

1、什么是ADO.NET 

ADO.NET (ActiveX Data Object的缩写) Microsoft.Net 框架引入的数据访问组件,.NET 框架提供了一组用于管理数据库交互的对象,这些类统称为 ADO.NET

2、ADO.NET 的基本组件包括:

DataSet 

.NET 框架数据提供程序:

NET框架数据提供程序都位于System .Data 名称空间内,对于ACCESS数据库操作的提供程序位于System .Data.OleDB名称空间下。

Connection对象:用于连接SQL数据库

Command对象:负责对数据库执行命令

DataAdapter对象:

Fill()用于向DataSet数据集的表中填充或刷新数据。

UpDate()将DataSet数据集提交到数据库。

SelectCommand 从数据库检索数据的Command对象。

DataReader对象: 只读且只进数据访问

 

流与文件

一、 文件目录操作的类

文件是存储在外部介质上数据的集合,具有名称和相应的路径。操作系统以文件为单位对数据进行管理的。所有类均包含在System.IO命名空间内。(注意哪个是静态类、那个是非静态类)文件操作的类(File类Fileinfo)

File类Fileinfo类

1、 目录操作(Directory类DirectoryInfo)

Directory类DirectoryInfo类的区别

2、 路径操作类(Path类)

二、文件流

文件和流是有区别的:文件是存储在硬盘上的数据,具有名称和相应的路径。当打开一个文件并对其进行读写时,该文件就成了流,对流可以进行读写操作。

1、 FileStream类(包含实例方法)

FileStream类表示指向文件的流,能够以同步或异步两种模式打开文件。FileStream类的实例构造函数有许多不相同的重载版本。常用的有三种。

public FileStream(string FilePath, FileMode);

public FileStream(string FilePath, FileMode, FileAccess);

public FileStream(string FilePath, FileMode, FileAccess, FileShare);

FileMode成员包括Append,Create,CreateNew,Open,OpenorCreate,Trunate

FileAccess成员包括Read,ReadWrite,Write

FileShare成员包括None, Read,ReadWrite,Write

举例:创建类的实例fs读取创建文件。

FileStream fs=new 

FileStream (fname,FileMode.Create ,FileAccess.ReadWrite ,FileShare.None );

2.StreamReader类和 StreamWriter类读写文本文件的方法

举例:

StreamWriter bs=new StreamWriter  (fs);

Bs.WriteLine();//将流写入到fs所指的文件中

StreamReader br=new StreamReader (fs); 

Br.ReadLine();

3.BinaryReader类和 BinaryWriter类读写二进制文件

举例

BinaryReader br=new BinaryReader (fs);

br.ReadString();

br.ReadUInt32 ()); }

/BinaryWriter bs=new BinaryWriter (fs);

bs.Write(player);// BinaryReader实例的Write的方法

三、流的基本操作(seek ,read ,write)


0 0