




免费预览已结束,剩余21页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、.NET框架VB.NET / C# / C+ / .Common language specification/ASP.NET (Web Forms& Web Services) / WindowsADO.NET(Data & XML)/Class Library/Common Language Runtime(CLR)/1、一般语言运行时Common Language Runtime(CLR):架构在操作系统的服务上,它负责应用程序实际的执行,满足所有的应用程序的需求 。用于执行和管理所有对 .NET 平台编写的程序语言编码。CLR 通过中间语言(Intermediate Language)机制实现基于.NET 的编程语言的无关性。 *通用语言规范 (CLS) 规定所有 .NET 语言都应遵循的规则生成可与其他语言互操作的应用程序*公共类型系统 (CTS) 通常包含标准数据类型、包含准则集CLS、CTS 和 MSIL 紧密配合以实现语言互操作性在.NET 平台编写的程序首先经过.NET 编译器,但得到的不是机器码,而是Intermediate Language(IL),然后再经过即时(Just In Time)编译器编译得到机器码并最终执行。 透过JIT编译器所编译出来的机器码仍被是CLR所管理。这种方式使得不管用何种语言(VB、C# 或其它语言)所写成的组件,都可以被结合在一起使用。2、.NET Framework Class Library.NET 类库的组织是以名字空间(Name Space)为基础的,最顶层的名字空间是System。 using System; using System.Data; using System.Text; C#示例 第三方厂商提供的类库同样可以使用。因为,该类库是以Name Space组织的,可以很容易地避免命名冲突。命名空间/说明System.Drawing 处理图形和绘图,包括打印System.Data 处理数据存取和管理,在定义 ADO.NET 技术中扮演重要角色System.IO 管理对文件和流的同步和异步访问 System.Windows 处理基于窗体的窗口的创建 System.Reflection 包含从程序集读取元数据的类System.Threading 包含用于多线程编程的类 System.Collections 包含定义各种对象集的接口和类3、ADO.NET (Data & XML)ADO.NET 为.NET 框架提供一套统一的数据访问技术与以前的ADO 相比,ADO.NET主要引入了以下几个新特性:(1)对 XML 的支持、(2)引入新数据对象(DataSet)、(3)语言无关的数据访问4、开发方式ASP.NET:WebApplication;Web ServiceWindows*运行在.NET Platform之上 *支持多种语言(VB.NET、C#、c+)5、Common Language Specification定义了一组运行于.NET Framework的语言特性CLS,使得符合该规范的语言所编写程序可以在.NET Framework上无缝的集成。符合该规范的语言,编译器可以把源代码编译成CLR所能识别的中间语言 Microsoft Intermediate Language( MSIL)和元数据metadata。C#的特点(优点)C#是专门为.NET应用而开发的语言。在.NET类库的支持下,C#能够全面地体现.NET Framework的各种优点。总地来说,C#具有以下突出的优点。 1语法简洁。2彻底的面向对象设计。3与Web应用紧密结合。4强大的安全机制。5完善的错误、异常处理机制。6灵活的版本处理技术。7兼容性Visual Studio 2005Visual Studio .NET 2005是一套完整的开发工具,用于构建高性能的桌面应用程序、XML Web Services、移动应用程序和 ASP Web 应用程序小结(1).NET Framework由 .NET Framework 类库和公共语言运行时两个主要组件组成 (2)CLR是管理用户代码执行的现代运行时环境,它提供JIT 编译、内存管理、异常管理和调试等方面的服务 (3)CTS定义声明、定义和管理所有类型所遵循的规则,而无需考虑源语言 (4)CLS是所有针对 .NET的编译器都必须支持的一组最低标准,以确保语言的互操作性 (5)命名空间是一组包含相关方法的相似类,专门用于避免类与类之间的名称冲突 (6)即时 (JIT) 编译器将MSIL代码编译为特定于目标操作系统和计算机体系结构的本机代码C# 中的数据类型分为两个基本类别 1、值类型 表示实际数据 只是将值存放在内存中 值类型都存储在堆栈中 int、char、结构 2、引用类型表示指向数据的指针或引用包含内存堆中对象的地址为 null,则表示未引用任何对象类、接口、数组、字符串装箱和拆箱 装箱是将值类型转换为引用类型 ;拆箱是将引用类型转换为值类型 利用装箱和拆箱功能,可通过允许值类型的任何值与 Object 类型的值相互转换,将值类型与引用类型链接起来隐式转换:无需指明转换,编译器自动将操作数转换为相同的类型。当两个不同类型的操作数进行运算时,编译器会试图对其进行自动类型转换,使两者变为同一类型。但是,不同的数据类型具有不同的存储空间,如果试图将一个需要较大存储空间的数据转换为存储空间较小的数据,就会出现错误。显式转换:又叫做强制类型转换,需指定把一个数据转换成其他类型。数组:是可将同一类型的多个数据元素作为单个实体存放的一种数据结构*数组是同一数据类型的一组值 *数组属于引用类型,因此存储在堆内存中 *数组元素初始化或给数组元素赋值都可以在声明数组时或在程序的后面阶段中进行数据类型元素个数 数组名称; int6 arrayHereArray 类是支持数组的语言实现的基类。1、创建数组在C#中,数组大体可以分为两种:一维数组和多维数组。1一维数组:如果数组中的每个数据都只有一个元素,那么,这样的数据就称之为一维数组。一维数组的定义方式如下:data_type arr_name = new data_typeint length2多维数组:如果数组中的每个数据都由多个元素组成,那么,这样的数据就称之为多维数组。多维数组的定义方式如下:data_type, arr_name = new data_typeint length1,int length2,int lengthn2、访问数组访问数组的元素包括读取或设置某个元素的值。最基本的方法是通过下标定位元素,另外还可以使用GetValue/SetValue方法。1通过下标定位元素C#中数组对其中的元素进行排序,并从0开始计数,这样每一个元素都会有一个唯一的下标,通过这个下标,就可以定位唯一的一个元素。 2使用GetValue/SetValue GetValue方法定义如下:public object GetValue(params int indices);3、数组排序对数组进行排序是指按照一定的排序规则,如递增或递减规则,重新排列数组中的所有元素。可以使用Array类的Sort方法完成这个功能。Sort方法有多种重载方式,常用的形式如下: public static void Sort(Array array);其中,参数array为待排序的数组。下面的示例首先定义了一个数组,含有元素5,4,3,2,1,然后利用Sort方法对其排序。4、Clone方法Clone方法对数组进行浅复制,即如果是引用类型数组,它不会复制元素引用的对象。对于值类型数组和引用类型数组,结果不同:克隆值类型数组会产生两个独立数组。克隆引用类型数组会产生指向相同对象的两个数组。数组序列数组序列(ArrayList)是一种较为复杂的数组,其实现了可变大小的一维数组。常用属性和方法如下。属性:Capacity/ Count/ IsReadOnly/ Item/方法:Add/AddRange /IndexOfBinarySearch /Insert/InsertRangeClear /LastIndexOfContains /Remove/RemoveAt/RemoveRangeGetEnumerator /ReverseGetRange /Sort1、创建ArrayList利用ArrayList的构造函数来创建一个新的列表,常用的形式有以下两种:(1)public ArrayList() (2)public ArrayList(int capacity)参数capacity可以指定所创建列表的初始容量。如果不指定,则初始容量为.NET的默认值16。下面的代码创建了两个列表对象: (1)ArrayList arr1=new ArrayList(); (2)ArrayList arr2=new ArrayList(100); 2、添加元素*可以通过ArrayList的Add和AddRange方法,实现向一个列表中添加数据。两者的区别在于:Add一次只能添加一个元素,而AddRange一次可以添加多个元素,这多个元素需要放在一个集合或数组中。两者常用的形式如下:(1)public int Add(object value)(2)public void AddRange(ICollection c) *Add和AddRange方法只能将元素添加到列表的末尾,如果想要在列表的任意位置添加元素,则需要使用Insert方法。3、删除元素ArrayList中支持删除元素的方法有3个,形式分别如下:(1)public void Remove(object obj):用于删除数组中特定对象obj的第一个匹配项。参数obj为要从ArrayList移除的Object;(2)public void RemoveAt(int index):用于移除ArrayList的指定索引处的元素。参数index为要移除的元素的从零开始的索引;(3)public void RemoveRange(int index,int count):用于从ArrayList中移除一定范围的元素。参数index为要移除元素的起始索引(从零开始计数),参数count为要移除的元素数。4、查找元素(1)在集合中对特定元素的查找也是常用的操作之一,ArrayList提供了二分查找的方法BinarySearch。(2)如果使用制定的排序策略对集合中的元素进行排序之后,相应地,也可以使用同样的排序策略,结合BinarySearch方法实现元素的查找。这时,形式如下: (3)public virtual int BinarySearch(object value,IComparer comparer); 5、遍历列表1使用foreach语句 遍历列表是指访问一遍列表中的所有元素,可以使用foreach语句完成这个功能。2使用GetEnumerator方法 除了foreach之外,还可以使用ArrayList的GetEnumerator方法实现列表的遍历。形式如下: public virtual IEnumerator GetEnumerator(); GetEnumerator方法返回整个ArrayList的枚举数对象IEnumerator。这个对象可以得到一个集合对象的所有元素,其最主要的属性为Current,用于获取集合中的当前元素。*数组(Array)与ArrayList的对比:(1)数组是固定大小。(2)数组要声明元素的类型,集合类的元素类型却是object。(3)数组可读可写不能声明只读数组;集合类可以提供ReadOnly方法以只读方式使用集合。(4)数组要有整数下标,集合不使用下标访问。Array位于 System 命名空间中;ArrayList 位于 System.Collections 命名空间中。*哈希表哈希表,名-值对。类似于字典(比数组更强大)。哈希表是经过优化的,访问下标的对象先散列过。如果以任意类型键值访问其中元素会快于其他集合。 C#中,哈希表是一个对的集合,每一个元素都是这样一个对。哈希表(Hashtable)每个元素是一个键/值对,键不能为空引用null,但值可以为null。在需要存储具有键/值对属性的数据时,例如对、等具有一一对应关系的数据时,常常需要使用哈希表。队列队列(Queue)实际上是一种特殊的列表。对队列,进先出。enqueue方法入队列,dequeue方法出队列。 1、创建队列利用Queue的构造函数创建一个新的队列,常用的形式包括以下几种:(1)public Queue () (2)public Queue (int capacity)(3)public Queue( int capacity, float growFactor)参数capacity可以指定所创建列表的初始容量,如果不指定,则初始容量为.NET的默认值32。而参数growFactor则指定当队列满后容量的增长率,新容量等于当前容量与growFactor的乘积,默认值为2.0。 2、元素入队可以通过Queue的Enqueue,实现向一个元素的入队操作,形式如下:public virtual void Enqueue(object obj);下面的示例中,首先定义了一个队列queue1,然后使用Enqueue方法,向其中添加了3个元素,其中第一个为字符串对象“Hello”,第二个为一个整数对象1,第3个为整型数组arr1。Queue queue1=new Queue();object item=new object();item=Hello;queue1.Enqueue(item); /字符串:Hello入队item=1;queue1.Enqueue(item);/整数:1入队int arr1=new int1,2,3;queue1.Enqueue(arr1);/数组:arr1=1,2,3入队3、元素出队与Enqueue相反,可以通过Queue的Dequeue,实现一个元素的出队操作,形式如下: public virtual object Dequeue();下面的示例中,首先定义了一个队列queue1,然后使用Enqueue方法,依次入队3个元素。然后再使用Dequeue方法,输出所有的元素。注意,这个输出的顺序和入队的顺序是一致的。Queue queue1=new Queue(); queue1.Enqueue(Hello);queue1.Enqueue(1);queue1.Enqueue(new int1,2,3);/依次入队:Hello、1、1,2,3object outItem=new object();while(queue1.Count0)outItem=queue1.Dequeue();Console.WriteLine(0,outItem); /通过出队操作,输出队列中的所有元素,顺序与入队的顺序一致。堆栈同Queue相反,堆栈(Stack),后进先出。push方法入栈,pop方法出栈。 1、创建堆栈利用Stack的构造函数创建一个新的堆栈,常用的形式包括:(1)public Stack(); (2)public Stack(int capacity)。参数capacity可以指定所创建列表的初始容量。如果不指定,则初始容量为.NET的默认值10。当堆栈中的元素达到其最大容量时,容量将自动增加一倍。下面的代码创建了两个堆栈对象:(1)Stack Stack1=new Stack(); (2)Stack Stack2=new Stack(100);2、元素入栈可以通过Stack的Push,实现向一个元素的入栈操作,形式如下:public virtual void Push(object obj);下面的示例中,首先定义了一个堆栈Stack1,然后使用Push方法,向其中添加了3个元素,其中第一个为字符串对象“Hello”,第二个为一个整数对象1,第3个为整型数组arr1。Stack stack1=new Stack();object item=new object();item=Hello;stack1.Push(item); /字符串:Hello入栈item=1;stack1.Push(item); /整数:1入栈int arr1=new int1,2,3;stack1.Push(arr1); /数组:arr1=1,2,3入栈3、元素出栈与Push相反,可以通过Stack的Pop,实现一个元素的出栈操作,形式如下:public virtual object Pop();下面的示例中,首先定义了一个堆栈Stack1,然后使用Push方法,依次入栈3个元素。再使用Pop方法,输出所有的元素。这个输出的顺序和入栈的顺序是相反的。Stack stack1=new Stack();stack1.Push(Hello);stack1.Push(1);stack1.Push(new int1,2,3); /依次入栈:Hello、1、1,2,3object outItem=new object();while(stack1.Count0) outItem=stack1.Pop(); Console.WriteLine(0,outItem); /利用Pop方法,循环输出stack1中所有的元素,注意到,输出的顺序与入栈的顺序是相反的字符串*字符串是应用程序和用户交互的主要方式,是评价一个编程语言非常重要的内容。*.NET提供了几个类来快速实现字符串操作,包括String,System.Text命名空间等。*字符串(String)是最常用的字符串操作类,可以帮助程序设计人员完成绝大部分的字符串操作功能,使用方便。如下所示为String类的属性和常用方法。属性:Empty/ Chars/ Length/方法:(1)Compare /GetEnumerator /Remove(2)Concat /IndexOf/IndexOfAny /Replace(3)Copy/CopyTo /Insert /Split(4)EndsWith/StartsWith /Join /Substring(5)Equals /LastIndexOf/LastIndexOfAny /ToLower/ToUpper(6)Format /PadLeft/PadRight /Trim/TrimEnd/TrimStart运算符:(1)相等运算符:= =(2)不等运算符:!=(3)连接算符:+1、比较字符串比较字符串是指按照字典排序规则,判定两个字符串的相对大小。按照英文字母顺序,出现在前面的字母小于出现在后面的单词。在String类中,常用的比较字符串的方法包括Compare, CompareTo ,CompareOrdinal以及Equals。1Compare方法 2CompareTo方法 3CompareOrdinal方法 4. Equals方法2、格式化字符串Format方法用于创建格式化的字符串以及连接多个字符串对象。Format方法有多个重载形式,最常用的为:public static string Format(string format, params object args);其中,参数format用于指定返回字符串的格式,而args为一系列变量参数。示例:String newStr=String.Format(0,1!,strA,strB);Console.WriteLine(newStr);/ 输出为Hello,World!3、连接字符串String类包含了两个连接字符串的静态方法Concat和Join。1Concat方法:用于连接两个或多个字符串。Concat方法也有多个重载形式,最常用的为:public static string Concat(string a,string b);2Join方法:利用一个字符数组和一个分隔符构造新的字符串。常用于把多个字符串连接在一起,并用一个特殊的符号来分隔开。Join的常用形式为:public static string Join(stringvalue,string separator,);3连接运算符“+”:String支持连接运算符“+”,可以方便地连接多个字符串。例如,用“+”把“Hello”和“World”连接起来。4、分割字符串使用前面介绍的Join方法,可以利用一个分隔符把多个字符串连接起来。反过来,使用Split方法可以把一个整串,按照某个分隔符分裂成一系列小的字符串。例如,把整串“HelloWorld”按照字符进行分裂,可以得到3个小的字符串,即“Hello”、“”(空串)和“World”。Split有多个重载形式,最常用的为:public string Split( params char separator);5、插入字符串String类包含了在一个字符串中插入新元素的方法,可以用Insert在任意位置插入任意字符。而使用PadLeft/PadRight方法,可以在一个字符串的左右两侧进行字符填充。1Insert方法 2PadLeft/PadRight方法6、删除字符串String类包含了删除一个字符串的方法,可以用Remove方法在任意位置删除任意长度的字符,也可以使用Trim/TrimEnd/TrimStart方法剪切掉字符串中的一些特定字符。1Remove方法:从一个字符串的制定位置开始,删除指定数量的字符。最常用的为:2Trim/TrimStart/TrimEnd方法:若想把一个字符串首尾处的一些特殊字符剪切掉,如去掉一个字符串首尾的空格等,可以使用String的Trim方法。 7、遍历字符串遍历子字符串(简称子串)是指在一个字符串中寻找其中包含的子串或者某个字符,在String类中,常用的定位子串和字符的方法包括StartWith/EndsWith、IndexOf/LastIndexOf以及IndexOfAny/LastIndexOfAny。1StartWith/EndsWith方法 2IndexOf/LastIndexOf方法3IndexOfAny/LastIndexOfAny方法8、复制字符串String类包含了在复制字符串方法Copy和CopyTo,可以完成对一个字符串及其一部分的复制操作。1Copy方法:若想把一个字符串复制到另一个字符数组中,可以使用String的静态方法Copy来实现,其形式为: public static string Copy(string str);2CopyTo方法:实现Copy同样的功能,但功能更丰富,可以复制源字符串中的一部分到一个字符数组中。另外,CopyTo不是静态方法,其形式为:public void CopyTo(int sourceIndex, char destination, int destinationIndex, int count);9、大小写转换String提供了方便转换字符串中所有字符大小写的方法ToUpper和ToLower。这两个方法没有输入参数,使用也非常简单。下例首先把“Hello”转换为“HELLO”,然后再变为小写形式“hello”。newStr=strA.ToUpper();Console.WriteLine(newStr);/输出为HELLOnewStr=strA.ToLower();Console.WriteLine(newStr);/输出为hello StringBuilder类与String类相比,System.Text.StringBuilder类可以实现动态字符串。此处,动态的含义是指在修改字符串时,系统不需要创建新的对象,不会重复开辟新的内存空间,而是直接在原StringBuilder对象的基础上进行修改。属性:Capacity/ Chars/ Length/ MaxCapacity方法:Append/ AppendFormat/ Equals/ Insert/ Remove/ Replace/1、创建StringBuilder对象*StringBuilder类位于命名空间System.Text中,使用时,可以在文件头通过using语句引入该命名空间:using System.Text;*声明StringBuilder对象需要使用new关键字,并可以对其进行初始化。如下语句声明了一个StringBuilder对象myStringBuilder,并初始化为“Hello”。StringBuilder myStringBuilder=new StringBuilder(Hello);2、追加字符串1Append方法Append方法实现简单的追加功能,常用形式为:public StringBuilder Append(object value);2AppendFormat方法AppendFoamat方法可以实现对追加部分字符串的格式化,可以定义变量的格式,并将格式化后的字符串追加在StringBuilder后面。常用形式为:StringBuilder AppendFormat(string format, params object args);3、插入字符串StringBuilder的插入操作是指将新的字符串插入到当前StringBuilder字符串的指定位置,如“Hello”变为“Heeeello”。可以使用StringBuilder类的Insert方法来实现这个功能,常用形式为:public StringBuilder Insert(int index,object value);其中,参数index指定所要插入的位置,并从0开始索引,如index=1,则会在原字符串的第2个字符之前进行插入操作;同Append一样,参数value并不仅是只可取字符串类型。4、删除字符串StringBuilder的删除操作可以从当前StringBuilder字符串的指定位置,删除一定数量的字符,例如把“Heeeello”变为“Hello”。可以使用StringBuilder类的Remove方法来实现这个功能,常用形式为:public StringBuilder Remove( int startIndex, int length);WinForms基础知识总结(1)WinForms可用于 Windows 窗体应用程序开发(2)Windows 窗体控件是从 System.Windows.Forms.Control 类派生的类(3)标签控件用于显示用户不能编辑的文本或图像(4)按钮控件提供用户与应用程序交互的最简便方法(5)组合框控件是列表框控件和文本框控件的组合,用户可以键入文本,也可以从所提供的列表中选择项目(6)窗体提供了收集、显示和传送信息的界面,是 GUI的重要元素(7)消息框显示消息,用于与用户交互 第5章 C#的面向对象设计一、面向对象概述面向对象是一种模块化的、以对象为基础的设计思想,现在被广泛应用于软件设计领域。类是对象的一个抽象的概念,对象则是类的一个实例化。二、命名空间命名空间是用来组织类的。通常可以把相关联的类放在一个命名空间中,进行有效的管理。组织代码的最基本的单元就是类。把每个类分别写在一个文件中,可以更好地组织代码的结构。但是,有时候还需要组织各个类,将再次分类的类组织起来。.NET架构提供了一种可以组织类的概念,那就是命名空间。命名空间的定义和引用用户可以自己定义命名空间,以便程序的功能可以更好地得到扩展,代码也可以更加有效合理地组织起来。使用命名空间之前,要先引用。引用命名空间是利用using关键字,后跟命名空间的名称。引用命名空间CustomNamespace1的代码如下:using CustomNamespace1;三、类类是面向对象中最为重要的概念之一,是面向对象设计中最基本的组成模块。类可以简单地看作一种数据结构。(1)在现实生活中,可以找出很多关于类的例子。例如,学生可以看作是一个类,那么某个同学就是这个学生类的一个实例化对象。同样,老师也可看作一个类,某个老师是老师类的一个实例化对象。(2)从软件设计的角度来说,类是一种数据结构,用于模拟现实中存在的对象和关系,包含静态的属性和动态的方法。(3)C#中类的声明需要使用class关键字,并把类的主体放在花括号中,格式如下: class-modifiers class class-name /属性 /方法 类的成员和访问控制从类的继承关系上讲,类的成员可以分为两大类:类本身声明的和从基类继承的。类的成员的类型有以下几种:常量、变量、方法、属性、事件、操作符以及构造函数和析构函数。从类的访问角度上来讲,类的成员又可以分为四类:公有成员、私有成员、保护成员及内部成员:(1)public:所属类的成员以及非所属类的成员都可以访问(2)private:只有所属类的成员才能访问(3)protected:所属类或派生自所属的类型可以访问(4)internal:当前程序集可以访问构造函数和析构函数构造函数主要的作用是执行类的实例的初始化。析构函数主要的作用就是回收系统占用的资源。1构造函数在实例化对象的时候,对象的初始化是自动完成的,并且这个对象是空的。有时候,希望每创造一个对象时都为其初始化某些特征,这时就需要用到构造函数。构造函数是类的一种特殊方法,每次创建类的实例都会调用它2析构函数上面介绍了使用构造函数在实例化对象时自动完成了一些初始化工作。反过来,在销毁对象的时候,有时候也希望能自动完成一些“收尾”任务。例如,关闭数据库连接等,C#使用析构函数来完成这个功能。四、域和属性域和属性都提供了保存类的实例的数据信息的方法。域就是表示对象或类相关联的变量,属性则实现了数据的封装和隐藏。1、域可以简单地理解为成员变量,其主要作用是保存数据信息。域的修饰符主要有几种:public,internal,protected,private。2、属性可以看作是实体特征的抽象表现。例如,一个学生的姓名、一个软件的大小、一个班级的人数等,这些都可以作为属性来表示。属性的声明涉及两个关键字:get和set。get:表示对属性的读操作。 set:表示对属性的写操作。get return_id/读取ID=set /验证输入长度小于2 if(_id.Length2) _id= value;/将值赋给ID时调用五、抽象类面向对象编程思想试图模拟现实中的对象和关系。但是,有时候,基类并不是与具体的事物相联系的,而是表达一种抽象的概念。抽象类就可以满足这种关系。抽象类的声明(1)在C#中,使用关键字abstract来定义抽象方法(abstract method),并需要把abstract关键字放在访问级别修饰符和方法返回数据类型之前,没有方法实现的部分,格式如下:public abstract void Train();(2)子类继承抽象父类之后,可以使用override关键字覆盖父类中的抽象方法,并做具体的实现,格式如下:public override void Train() 抽象方法子类在继承了抽象父类之后,就可以具体实现其中的抽象方法了。六、接口接口实际上是定义了一组数据结构,通过这组数据结构,可以调用组件对象的功能。接口和抽象类很相似。 接口的概念接口和抽象类非常相似,它定义了一些未实现的属性和方法。所有继承它的类都继承这些成员,在这个角度上,可以把接口理解为一个类的模板。接口的声明下面通过一个具体的例子,介绍如何在C#中声明和使用接口。示例中有一个“形状”的概念,它有3个具体的形状类:矩形、圆形、三角形。可以看出,在某种意义上,接口与抽象类非常相似。 public interface IPict int Deletelmage(); void Displaylmage();多重接口实现 C# 不允许多重类继承 ,但 C# 允许多重接口实现,这意味着一个类可以实现多个接口 七、方法方法属于类的成员之一,用于执行计算或者其他的行为。*声明方法访问修饰符返回类型(参数列表)/方法主体访问修饰符(可选),默认情况下为private如果不需要返回任何值,方法可能返回void数据类型*调用方法对象名.方法名(参数列表);return 表达式;*静态方法静态方法用于表示类所具有的行为,而非其对象所具有的行为。例如,学生分班这项任务,就是全体学生集体的事情。静态方法通过在定义中使用static关键字来声明,static关键字放在修饰符和方法返回的数据类型之前,格式如下:访问修饰符 static 返回类型 (参数列表) / 方法主体 方法的重载(1)有时候,对于类需要完成的同一个功能的要求可能比较复杂。例如,对学生类而言,如果想要使其具有一个“成长”方法,但是这个方法,可能使其增长一岁,也可能增加指定的岁数,该怎么解决这个问题呢?(2)C#使用重载技术来完成这个功能。重载是指允许存在多个同名函数,而这些函数的参数不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。操作符的重载C#还提供了符号重载机制:允许重载运算符,如“+”,“=”等,在原来功能的基础上,完成用户自定义的功能。例如:class Rectangleprivate int iHeight;private int iWidth;/重载操作符 =public static bool operator =(Rectangle a, Rectangle b) return (a.Height = b.Height) & (a.Width = b.Width); /使用重载后的操作符比较矩形if (objRect1 = objRect2) Console.WriteLine(矩形1和矩形2高和宽都相等); 继承和多态继承和多态是面向对象思想的两个主要的特征。(1)继承的本质是代码重用。当要构造一个新的类时,通常无需从零开始。例如,在学生类的基础上,建立一个“大学生”类。很明显,“大学生”这个类具有自己的特点,如“所在系”就并不是所有的学生都有的,而是大学生的特殊性质。(2)可以把大学生看作是学生的一种延续,既在继承了学生的属性和方法基础之上,又包含了新的属性或方法。在构造大学生这个类时,只需在学生类的基础上添加大学生特有的特性即可,而无需从零开始,这时,称学生类为父类,大学生类为子类。多态的含义就是C#中允许多个方法的方法名相同,只要它们的方法签名不同就可以。方法签名指的是方法名和方法参数列表的构造。public static void Main() Console.WriteLine(hahaha); Console.WriteLine(5); Console.WriteLine(true); C#是一种强类型语言,它的不同类型必须经过转换才能进行处理,那么为什么一个WriteLine()方法既可以输出字符串类型的常量,又可以输出整型和布尔型的常量呢?原因就在于多态性。 修饰符一、存取修饰符:(1)public:存取不受限制(2)private:只有包含该成员的类可以存取(3)internal:只有当前工程可以存取(4)protected:只有包含该成员的类以及继承的类可以存取二、类修饰符:(1)abstract:可以被指示一个类只能作为其他类的基类(2)sealed:指示一个类不能被继承三、成员修饰符:(1)abstract:指示该方法或属性没有实现(2)const:指定域或局部变量的值不能被改动(3)event:声明一个事件(4)extern:指示方法在外部实现(5)override:对由基类继承成员的新实现(6)static:指示一个成员属于类型本身,而不是属于特定的对象(7)virtual:指示一个方法第七章 数据库开发技术用户和系统的交互过程是:用户首先通过用户界面向系统发出数据操作的请求,用户界面接收请求后传送到ADO.NET;然后ADO.NET分析用户请求,并通过数据库访问接口与数据源交互,向数据源发送SQL指令,并从数据源获取数据;最后,ADO.NET将数据访问结果传回用户界面,显示给用户。一、ADO.NET简介 ADO.NET就是一系列提供数据访问服务的类。数据访问技术回顾微软公司的数据访问技术所走过的几个阶段,ODBC:第一个使用SQL语言访问不同关系数据库的数据访问技术。DAO:提供给Visual Basic程序设计人员的一种简单数据访问方法,用于操纵Access数据库。RDO:解决了DAO要在ODBC和Access之间切换导致性能下降问题。OLEDB:基于COM(Component Object Model),支持非关系数据的访问。ADO:基于OLE DB,更简单、更高级、更适合于Visual Basic程序设计人员。ADO.NET:基于.NET体系架构,优化的数据访问模型和基于COM的ADO是完全不同的数据访问方式,最新ADO.NET 2.0版本在性能方面有了更进一步的提高。System.Data命名空间ADO.NET结构的类包含在System.Data命名空间内,根据功能划分,System.Data空间又包含了多个子空间。 =空间/说明=System.Data.Common:包含ADO.NET共享的类System.Data.OleDb:包含访问OLEDB的数据源类System.Data.SqlClient:包含访问SQL Server数据库的类System.Data.SqlTypes:包含在SQL Server内部用于本机数据类型的类,这些类对其他数据类型提供了一种更加安全、快捷的选择System.Data.Odbc:包含访问ODBC数据源的类System.Data.OracleClient:包含访问Oracle数据库的类二、连接数据库若要访问数据库,必须连接到数据库,本节将首先以连接SQL Server数据库为例进行数据库连接技术的介绍。1、SqlConnection类System.Data.SqlClient.SqlConnection类提供对SQL Server数据库的连接,其常用属性和方法*SqlConnection类常用的属性和方法:属性:ConnectionString/ Database/ DataSoure/ State/ WorkstationId方法:Open/ ChangeDatabase/ Close/ CreateCommand/ BeginTransaction2、设置连接参数 SqlConnection的ConnectionString属性指定了所要打开SQL Server数据库的参数,包含源数据库名称和建立初始连接所需的其他参数。因此,在连接数据库之前,首先要构造一个合理的连接字符串。 示例:Persist Security Info=False;Userid=sa;pwd=sa;database=northwind;server=(local)3、创建SQL Server连接 在构造完成SqlConnection对象的ConnectionString属性后,便可以使用其Open方法连接SQL Server数据库了,形式如下。public virtual void Open();另外,也可以直接使用SqlConnection的构造函数,并把连接字符串作为参数来建立连接。下面的代码同样完成数据库连接:SqlConnection myCon = new SqlConnection (Persist Security Info=False;User id=sa;pwd=sa;database=northwind;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 咨询与心理健康教育课件
- 云南省昆明市名校2025届英语七年级第二学期期末达标检测试题含答案
- 《华凌电气网络营销战略》课件
- 包装世界题库及答案
- 消费金融市场规模扩张趋势解析及2025年风险防控策略研究报告
- 安全质量教育试题及答案
- 矿山智能化无人作业技术在提高矿山作业效率与安全性中的应用报告
- 安全试卷试题及答案
- 安全生产考试题库及答案大全
- 安全护理常规试题及答案
- 2025河南中考:政治必背知识点
- 算力电力协同发展研究报告2025年
- 社会文物鉴定质检服务机构执业能力认可管理体系(公开征求意见稿)
- 广东省东莞市2025届九年级下学期中考二模数学试卷(含答案)
- 2025-2030中国宠物殡葬服务行业市场深度分析及发展前景与投资战略研究报告
- 2024-2025学年湖北省武汉市七校高一下学期4月期中联考数学试卷(含答案)
- 小学生医学课件
- 食管癌食管气管瘘护理
- 人教版八年级道德与法治下册教学设计:4.1公民基本义务
- 接触网电连接压接工艺及压接质量检查课件
- 现场管理四大指标:安全、品质、成本、交期
评论
0/150
提交评论