学习C#前必需了解的内容:
1、 C#与.NET 的关系,C#的结构和方法论反映了.NET基础方法论,在许多情况下C#的特定动能取决于.NET的功能或.NET类,C#是一种相当新的编程语言,作为为.NET Framework而专门设计的语言将与其一起被使用,其强大支持平台.NET,使其一开始就充满了活力,让人能看到其良好的发展前景。C#就其本身而言只是一种语言,尽管它是用于生成面向.NET环境的代码,但它本身不是.NET的一部分。。NET支持的一些特性,C#并不支持。而C#支持的另一些特性,.NET却不支持(如运算符的重载)。
2、 公共语言运行库即CLR或.NET运行库,先把代码编译为中间语言(IL),再通过CLR把IL编译为平台专用代码,这与JAVA字节代码有很多相似之处。
学习内容:
分为四个部分,即基础知识介绍、C#Windows应用程序、C#Web应用程序和ADO.NET数据库操作。
1、 C#基础知识介绍:
和其他编程语言一样拥有其语法规则、命名空间、数据支持,但究其根本而言,与C++等面向对象的语言有其惊人的相似之处。
常量、变量、变量的类型、类型的转换、表达式运算符、流程控制、方法和函数、泛型。定义和使用一些基础的数据方式与C++及其它面向对象编程语言相似。变量的类型包括文本类型,数值类型和其它类型。
(1) 文本类型主要包括char、string。char用来存放单个字符, string用来存放字符串。
(2) 数值类型主要包括整数,浮点数,长整数等。
(3) 类型转换提供隐式转换和显式转换两种方式。
(4) 表达式,表达式是符号和运算的组合,简单的表达式可以是一个变量,常量,列或标量函数,也可以是两个或两个以上的表达式连接起来,组合成复杂的表达式。如:年int a=1;int b=2;int x=a+b;就是几个表达式。
(5) 流程控制语句:C#提供5种流程控制语句:if、switch、for、foreach、while。
(6) 方法和函数:包括方法和函数的定义,函数的参数,函数的重载.
(7) 委托:委托是一种引用方法的类型,一旦为委托分配了方法,委托将与该方法具有完全相同的行为,委托方法的使用可以像其它任何方法一样,具有参数和返回值。
(8) 泛型:这是C#2.0新添加的类型,泛型将类型参数的概念引入.NET Framework,其优点是类和方法将对类型的指定推迟到实例化该类和方法的时候,泛型类和泛型方法同时具备可重用性,类型安全和效率,这是非泛型类和非泛型方法无法具备的,泛型通常用在集合和在集合上运行的方法中。
C#中的OOP(面向对象)的概念
(1) 构造函数
(2) 带参数的构造函数
(3) 析构函数
(4) 垃圾回收器:负责释放内存,这是通过销毁不在被引用或不在使用的对象来实现的。 工作原理:如果为定义析构函数的对象分配了内存,运行库应该将对象添加到需要销毁的对象的列表中,在C#,这叫做析构函数。 回收器定期检查有没有未被引用的对象。 如果找到了其名称没有列在销毁器中的对象,就立刻清楚该对象。对象销毁过程中就将该对象从列表中删除
(5) C#中的方法重载 ,分为不同参数个数的方法重载和不同参数类型的方法重载,重载也是面向对象的三要素之一。
(6) 操作符重载
a、 重载操作符一定是public和 Static的。
b、 在重载比较运算符时要成对重载,在重载“==”时一定要重载!=; public static bool operator ==(prople p1,people p2); 参数列表必须是对象类型!!!
(7) C#中的继承 面向对象的三要素之一,继承就是完全复制,必须是单继承,子类必须要大于父类。
(8) C#中的方法重写 要重写基类的现有方法,需要在继承类中声明一个同名的方法,并在方法名称前附加new关键字。
高级C#概念
(1) 集合:集合里面有个哈希表 Hashtable hashtable liststudent =new hashtable; liststudent.add("zhang san","1000"); liststudent.add("lisi","1001"); .net提供的集合是一组通用的数据类型,这些数据类型为对数据进行集中存储和操作提供了可能。利用hashtable类来将数值做为键值对的集合进行存储。
(2) 异常:异常包含了4个关键字 try ,catch ,throws,finally. try 和catch可以处理所出现的异常,它为处理错误提供了一种结构化的方式, try块里是程序代码, catch块里是错误处理代码,catch块捕捉由try产生的异常,一个try可以有多个catch。可以使用throw来产生系统异常或自定义的异常,finally块是无论控制流如何都会执行这些语句,无论是否出现异常都会执行这里面的代码。
(3) 反射:如果想要在运行时找到有关对象,对象的类、方法的类,方法和变量等信息,则需要使用反射,typeof() 用来检索类的信息。
(4) 程序集:是一种共享和重用代码的方式,它形成了逻辑功能单元。由2部分组成, 一组形成逻辑功能单元的类型和资源,一个包含程序集描述的清单。 可以将一个或多个文件编译成程序集
3、 C#Windows应用程序设计:
VS2005为应用程序的开发提供了大量的模板以简化自动开发的操作,其中包括:
(1) Widows应用程序:普通的C/S窗体应用;
(2) 类库:创建一个具备单独命名空间的类库;
(3) Windows控件库:提供自定义用户控件的模板,提高界面和代码的复用率;
(4) 控制台应用程序:控制台是系统提供的一个字符界面,类似于DOS窗口,输入输出都通过此窗口完成;
(5) 设备应用程序:提供对智能移动设备的支持,如手机终端开发应用;
(6) Crystal Reports应用程序:提供支持水晶报表的应用配置,可以方便的实现水晶报表的创建和引用.
工作界面:其中包括:解决方案资源管理器,工具箱,菜单,
控件:
(1) 公共控件:包括按钮控件,文本显示控件,输入控件,日期控件,列表控件,树控件等;
(2) 容器:包括流布局控件,分隔条控件,选项卡控件等;
(3) 菜单和工具栏:包括快捷菜单控件,工具栏控件等;
(4) 组件:包括帮助文档组件,定时器组件等;
(5) 对话框:包括保存文件对话框,打开文件对话框等;
(6) 打印;
(7) 常规;
(8) Crystal Reports.
通过将这些控件拖拉到窗体中并设置相应的属性,再加上一些代码就可以基本上完成一些简单的Windows应用程序。
3、C#Web应用程序:
对于Web应用程序的开发,VS2005提供了多个应用模板,开发人员利用这些模板可以轻松的创建应用
其中包括:
(1) ASP.NET网站:一个空的ASP.NET网站,是Web程序的通用标准模板,创建后只包含一个空页面;
(2) ASP.NET Web服务:用于创建XML Web服务的网站,创建后包含一个默认的”Service.asmx”,是一个Web服务文件;
(3) 个人网站初学者工具包:用于创建个人网站的初学者工具包,创建完成后是一个简单的个人网站,其中包含用户管理和相册管理;
(4) 空网站:什么内容都没有的空网站,创建完成后网站的内容和结构都是空的;
(5) ASP.NET Crystal Reports Web Site:用于创建水晶报表的网站,创建完成后带有一个水晶报表示例.
工作界面和Windows应用程序的几乎一样
控件:包括数据,验证,导航,Webparts等
和C#Windows应用程序一样,只需要拖拉一些基本的控件和设置相应的属性,在将其与XML结合起来,就可以做出比较满意的网站项目,要强调的一点就是在设计的过程中,其中的Web.config需要初步运行过后系统会自动生成,在里面可以添加相应的代码。但如果想要做一个令自己或是用户都相当满意的项目,必须通过代码来实现相应的功能,其中还牵涉到许多关于ASP.NET及XML的知识,需要相关的手册才能更好更高效的解决相应的问题。
4、ADO.NET数据库访问:
ADO.NET对Microsoft SQL Server和XML等数据源,以及通过OLE DB和XML公开的数据源提供一致的访问,可以使用ADO.NET来连接到这些数据源,并检索,处理和更新所包含的数据,ADO.NET包含用于连接到数据库,执行命令和 检索结果的.NET Framework数据提供程序,可以直接处理检索到的结果,或将其放入ADO.NET DataSet数据集对象,以便与来自多个源的数据或在层之间进行远程处理的数据组合在一起,以特殊的方式向用户公开.ADO.NET Dataset对象也可以独立于.NET Framework数据提供的程序使用,以管理应用程序本地的数据源和源自XML的数据.
具体数据库操作(SQL Server):
(1)数据库连接:数据库连接对象SqlConnection
数据库连接对象成员:
l ConnectionString: 是SqlConnection对象的基本属性,获取或设置用于打开SQL Server数据库的字符串;
l State: SqlConnection对象的状态;
l CreateCommand: 用来创建一个与SqlConnection关联的SqlCommand命令对象;
l Close:关闭当前连接;
l Open:打开当前的连接.
(2)数据库命令执行对象SqlCommand
数据库命令执行对象成员:
l CommandText;数据库的执行命令语句;
l CommandType:命令语句的类型,包括三种类型:语句,存储过程和表;
l Connection:与SqlCommand对象相关联的数据库连接对象;
l ExecuteNonQuery:数据库命令执行的方法,表示从数据库中返回值;
l ExecuteReader:数据库命令执行的方法,表示从数据库中返回的只是数据集;
l ExecuteScalar:数据库命令执行的方法,表示只从数据库中返回一个字段.
其中ExecuteNonQuery是常用方法,用来执行增加,删除,修改等数据库命令.
(3) 只进数据集对象SqlDataReader:此对象没有构造函数,不能使用new关键字创建,必须使用SqlCommand的ExecuteReader方法生成.在使用SqlDataReader时,关联的SqlConnection正忙于为SqlDataReader服务,对SqlConnection无法执行任何其他操作,只能将起关闭.
SqlDataReader对象成员:
l FieldCount:获取数据集中记录行的列数,就是数据库中表的字段数;
l HasRows;判断数据集是否包含行;
l Read:读取一行数据;
l Close:关闭数据集;
l GetName:获取数据集中列的名称,即字段名称;
l GetValue:获取以本机格式表示的指定列的值;
l GetValues:获取当前行的集合中的所有列属性.
根据类型获取字段的方法,为了程序的需要,很多时候需要对获取的数据进行类型转换, SqlDataReader对象提供了很多专门转换类型的方法.
(4) 缓存数据集DataSet
DataSet结构中的主要成员:
l Data Table对象: Data Table对象不是DataSet对象中的成员,而是DataSet组织结构的一部分, Data Table也是ADO.NET中的核心对象。
其中经常使用到成员有:
1. Columns:获取当前Data Table内的所有列;
2. Rows:获取当前Data Table的所有行;
3. AcceptChanges:提交自上次调用AcceptChanges以来对该表进行的所有更改;
4. NewRow:根据表的结构,创建一个新行;
5. ReadXml:将XML架构和数据读入Data Table;
6. WriteXml:将Data Table的当前内容以XML格式写入。
l Data Column
l Data Row
创建数据集可以以编程方式实现也可以使用可视向导创建,
总结:
通过近段时间的学习,对C#以及.NET平台有了初步的了解,在看书和实践操作的过程中总结了一些经验.
在VS2005用C#中编写各种Windows应用程序,构建ASP.NET网站,以及通过Windows应用程序和ASP.NET网站连接数据库,其中遇到问题,如果直接连接,运行程序时就会抛出异常,因为在默认情况下Sql server2000不能与应用程序或网站建立连接,必须更改前者的权限及登录设置才可以进行正常连接.
异常处理机制,这在其他语言中也有(C语言还没有),有利于顺利的编译和执行程序.
.NET的安全性:代码访问安全,这是.NET的一个特性,它根据代码的信任级别来管理代码,如果CLR非常信任代码,允许它们运行,就会开始执行代码。
总之,在学习C#的过程中,同过MSDN可以处理绝大部分问题,其内容的丰富及其详细的介绍,可以是说是一个很不错的工具。很多函数、类和异常处理都可以在里面得到相应的解释和解决办法。不仅初学者有用,对于一些比较熟练的编程爱好者也有很大的帮助。
C#推出后,议论纷纷,有说,C#要取代Java。这种说法为时尚早,需要看C#的发展前景。不过,C#真的是一种非常强大的快速开发语言。
1、果不包括指针部份的话,可以说,C#的面向对象的程度要比Java还要高!C#中的基本类型都是基于对象的,例如:int,当你定义一个int型变量以后,你就可以通过这个变量来访问int类型的成员。实际上,C#为每一个基本类型都内建了相应的类,如:int-->Int32,Int32是系统提供的一个类,基本类型int就映射为类Int32.而Java中你找不到这样的内建关系的。Java只是提供了操作这些基本类型的工具类。如:Interger对应于int.但是这只是一个简单的操作基本类型的工具,int在Java中并不是基于对象的。C#参考大多数面向对象的语言,并且解决已有的面向对象语言的一些弊病,可以说,C#大大提高了面向对象语言的技术和实用性。</P><P>
2、#强大的功能是Java无法比拟的。它拥有VB开发的快捷和C 的强大!任何VB和C/C 所能做到的,你都可以用C#简单的做到!也就是在Windows平台下,C#足以取代VB和C/C .而且C#较Java在面向对象的开发上还简单!C#提高了语言面向对象的技术和思想。结合了面向模块和面向对象的技术。使用户使用起来更方便,更快捷!而且提供了非常强大的兼容性,你可以用C#调用已用的VB,C/C 程序,COM,VBX...几乎是所有微软产品的总接口。</P><P>
3、#的速度是Java可望而不可及的!C#为了跨平台也采用了JIT,但是不是简单的移植和套用原有的JIT技术,而是JIT的发展与提升!</P><P>自从接触C#后,Java已对我没有任何吸引力,几乎不用了。</P><P>但是,令人担心的是,C#并没有公开语言的细节。你不知道C#在Windows平台上的编译格式,也不知道C#JIT的规格。因此你很难开发出自己的跨平台的C#编译器。这样一来,C#就牢牢地掌握在微软的手里。C#的更新提高,你只能听命于微软。谁指定的标准不可怕,可怕的是标准掌握在谁的手里!C#固然可怕,但是更可怕的是C#背后的平台.NET,C#只是.NET的一把为其添土,固堤的铁锹而已。当.NET大行其道的时候,才是最可怕的时候!
参考文献:
1、《Visual C# 2005程序设计》作者:代方震、陈冠军 人民邮电出版社;
2、《C#高级编程》第四版 作者:Christain Nagel、 Bill Evjen、 Jay Glynn 清华大学出版社;
3、《Visual C#.NET中文版Web服务开发基础》作者:孙永强、杨丽坤 清华大学出版社;
4、《C#程序设计实践教程》作者:李乃文、傅游、沈学利、任建华 清华大学出版社;
5、《Visual C# 2005程序设计实用教程》作者:王辉、张大治 清华大学出版社;