欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    VisualStudio开发环境介绍解析课件.ppt

    • 资源ID:1289812       资源大小:3.83MB        全文页数:170页
    • 资源格式: PPT        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    VisualStudio开发环境介绍解析课件.ppt

    Visual Studio .Net 开发环境介绍,Visual Studio .Net 开发环境介绍,概述,.NET Framework框架Visual Studio .Net集成开发环境(IDE)程序设计语言 C#.NET 相关知识学会开发:Windows窗体应用程序Web应用程序,概述.NET Framework框架,1.1 Visual Studio .Net 架构,1.1 Visual Studio .Net 架构,1.2 .NET Framework框架,.NET Framework = CLR + 基类库公共语言运行时CLR 统一的编程类库,1.2 .NET Framework框架.NET Frame,1.3 .NET Framework框架公共语言运行时是 .NET Framework 的基础。 内存管理、线程管理、远程处理等核心服务强制实施严格的类型安全可提高安全性和可靠性的其他形式的代码准确性事实上,代码管理的概念是运行时的基本原则。托管代码:以运行时为目标的代码非托管代码:不以运行时为目标的代码.NET Framework 类库是一个与公共语言运行时紧密集成的可重用的类库集合。 该类库是面向对象。 此外,第三方组件可与 .NET Framework 中的类无缝集成。,1.3 .NET Framework框架,1.4 C# 运行模型,1.4 C# 运行模型,1.5 版本回顾,1.5 版本回顾,1.6 新增特性,.NET Framework 1.1,2.0版本新增功能http:/ Framework 3.0 版介绍http:/ Framework 3.5 版新增功能http:/ Framework 4.0版本新增功能http:/,1.6 新增特性.NET Framework 1.1,2.0,2.1 Visual Studio .Net集成开发环境(IDE),2.1 Visual Studio .Net集成开发环境,2.2 Visual Studio .NET的优点,多语言支持Visual Studio .NET 支持 Visual Basic .NET、C# 、Visual C+ .NET、Visual J# .NET风格统一的集成开发环境不同的语言、不同类型的项目使用相同的集成开发环境自定义用户界面多项目支持支持各种类型项目的开发在一个解决方案中包含多种类型的项目单启动项目和多启动项目,2.2 Visual Studio .NET的优点多语言支持,强大的调试支持反汇编、内存监视、寄存器监视、监视表达式、断点、逐句执行、运行到指定位置、设置执行点 实时调试、本地调试、远程调试,强大的调试支持,起始页,起始页,2.3 解决方案,解决方案的定义一个逻辑上的容器,包含构成应用程序的项目和其它文件解决方案的组成一个解决方案可以包含一个或多个项目解决方案可以包含独立于项目的文件被多个项目共享的文件,将被生成到应用程序中杂项文件,不会被生成到应用程序,仅被解决方案引用使用解决方案的优点可以同时使用多个不同类型的项目全权处理文件管理细节,用户可以集中精力开发、部署应用程序使用解决方案资源管理器可观察所有的项目和文件,2.3 解决方案解决方案的定义,2.4 项目定义,项目的定义项目是解决方案的构件块,由文件组成,它的输出结果通常为可执行文件(.EXE)或动态链接库(.DLL)所有的项目都包含在解决方案中,并且含有一个惟一的项目文件(扩展名csproj)项目文件含有对应项目所包含的文件的一个列表以及它们的跟踪信息项目通常包含多个项,2.4 项目定义项目的定义,2.5 集成环境演示,创建解决方案添加控件和编写代码编译和运行程序代码分析,2.5 集成环境演示创建解决方案,2.5.1 创建解决方案,选择【文件】|【新建】|【空白解决方案】命令,打开【新建项目】对话框为解决方案起名为“Demo”在【解决方案资源管理器】中,右击解决方案选择【添加】|【新建项目】命令在【添加新项目】对话框中选择C#类型项目和windows应用程序,2.5.1 创建解决方案选择【文件】|【新建】|【空白解决方,2.5.2 添加控件并编写代码,打开【工具箱】窗口,从【windows窗体】栏选择一个Button和一个Label,并拖放到窗体上。双击Button控件,进入代码编辑器,在光标所在位置添写代码。,2.5.2 添加控件并编写代码打开【工具箱】窗口,从【win,编辑器环境简介,当输入“.”时,会提示该对象的所有方法、属性和事件,可直接选择,按“Enter”键。当输入“(”时,会显示一个浮动窗口,它包含了该方法的输入参数类型和个数,确保正确调用。关键字、标识符和操作符等不同类别单词可以显示不同颜色。可在【工具】|【选项】中设置。对于错误代码会在该代码下显示红色波浪线。对于不清楚的关键词,可以选中该单词后按F1键,直接查看帮助。,编辑器环境简介当输入“.”时,会提示该对象的所有方法、属性和,2.5.3 编译并运行程序,按F5或者选择【调试】|【启动】命令可以进行编译。当有多行代码时可以用F11或者选择【调试】|【逐语句】进行跟踪单步调试。,2.5.3 编译并运行程序按F5或者选择【调试】|【启动】命,2.5.4 代码分析,1. 命名空间:对类型进行逻辑分组 using System; namespace WindowsApplication1 类定义; ,2.5.4 代码分析1. 命名空间:对类型进行逻辑分组,2.类 Visual C#中的每个对象都必须属于一个类。如:public class Form1:System.Windows.Forms.Form3.Main()方法 所有的Visual C#程序都必须包含一个Main()方法,是程序的入口点。4.注释语句1)单行 2) 多行,2.类,3.1 C#概述,1.和c+/c的相同点C#从CC+语言发展而来,它继承了CC+语言的许多特性.主要体现在语句、表达式和运算符上。 大小写敏感;注释语句以“/”开头或者“*.*”;以“;”结尾;使用“ ”来括起语句块,3.1 C#概述1.和c+/c的相同点,2.C#的改进类型安全的,支持版本化,支持事件,支持无用单元收集,支持属性化编程支持COM平台和元数据支持XML和WEB组建开发C#中的所有字符以Unicode形式存放,每个字符占2个字节,2.C#的改进,3.2 C#语言基础,标识符以字母或下划线开始,其后跟任意字母、数字、下划线的字符串用于变量名、常量名、函数名、类名、对象名等名字的表示代码中的各种标识符都是Unicode的形式(C#的源文件都是以Unicode的形式保存)变量常量const 类型标识符 变量名=表达式;,3.2 C#语言基础标识符,3.3 简单数据类型,数值类型整型有符号 sbyte short int long无符号 byte ushort uint ulong浮点型 float double小数型 decimal字符类型字符型 char字符串型 string布尔类型,3.3 简单数据类型数值类型,3.4 C#运算符,3.4 C#运算符,3.4 C#运算符,成员访问运算符 .访问类型的成员索引运算符 通过索引的形式来访问数组、索引器或属性类型转换运算符()进行类型转换操作对象创建运算符 new用来创建对象并调用对象的构造函数,System.Widows.Forms.MessageBox.Show,Str12 = “Hello”;,int a(int)x;,Classl MyClassnew C1assl();int inew int();,3.4 C#运算符成员访问运算符 .System.Wido,3.4 C#运算符,类型信息运算符:运行时检查或获取对象的类型信息,is:判断对象运行时的类型是否与给定类型兼容。 例如:int i;if(i is int)as:用于执行兼容类型之间的转换。 例如:int i; double j=i as double;Sizeof :用来获取值类型的大小,以字节为单位Typeof :返问一个类型的System.Type 对象 运算符的优先级,3.4 C#运算符类型信息运算符:,3.5 C#常用语句,声明语句:用于变量或常量的申明嵌入语句 语句块 空语句 “;”表达式语句 x=a+b;条件选择语句 循环语句 跳转语句异常处理语句 using语句 (类似于include和import),3.5 C#常用语句声明语句:用于变量或常量的申明,3.5 C#常用语句,using用法(1)引用命名空间 using Namespace; (2)创建命名空间别名 using alias = namespace | type; (3)强制资源清理 清理非托管资源,不受GC控制的资源。Using结束后会隐式的调用Disposable方法。 using (Class1 c = new Class1() /清理非托管不受GC控制的资源 但是当对象使用using关键字的时候,必须实现IDisposable接口。其实using的使用和try-catch-finaly中,在finaly代码域调用Disposable方法效果一样。注意Using不能使用多个不同的类,3.5 C#常用语句using用法,3.5.1 C#常量/变量声明,C# 中不能声明全局变量或全局静态变量。 所有声明变量都是局部变量或类的成员变量。,例题:static void main() int a; int b=2,c=3; const float pi=3.14; ,3.5.1 C#常量/变量声明C# 中不能声明全局变量或全局,readonly 关键字与 const 关键字不同。const 字段只能在该字段的声明中初始化。readonly 字段可以在声明或构造函数中初始化。因此,根据所使用的构造函数,readonly 字段可能具有不同的值。另外,const 字段为编译时常数,而 readonly 字段可用于运行时常数,,readonly 关键字与 const 关键字不同。cons,3.5.2 条件选择语句,C#中包含两种条件选择语句:if else 语句switch-case语句,Switch(表达式) case 常数表达式; /语句块 跳转语句 (break,return,goto) default: 语句块 ,if(表达式) 语句块1 else 语句块2,3.5.2 条件选择语句C#中包含两种条件选择语句: Swi,3.5.3 循环迭代语句,循环语句用来反复地执行些操作。用户可以指定循环的次数,或者指定循环的条件。四种循环语句:for语句Foreachin语句while语句do语句,3.5.3 循环迭代语句循环语句用来反复地执行些操作。用户,for循环for(初始化;表达式;迭代部分)例如: for(int i=0;i10;i+) Console.WriteLine(i); ,for循环,foreach 语句为数组或对象集合中的每个元素重复一个嵌入语句组。foreach语句用于循环访问集合以获取所需信息,但不应用于更改集合内容以避免产生不可预知的副作用。 foreach 语句适用于实现了 System.Collections.IEnumerable或 System.Collections.Generic.IEnumerable接口的对象集合或数组。可以在 foreach 块的任何点使用 break 关键字跳出循环,或使用 continue 关键字进入循环的下一轮迭代,还可以通过 goto、return 或 throw 语句退出。集合对象是指实现了IEnumerable接口的对象,而不是IEnumerator接口。但是C#的要求并不严格,即虽然没有显式继承IEnumerable接口,但只要类声明中包含GetEnumerator()方法即可。foreach会自动对迭代器返回的类型进行强制类型转换,int numbers=1,2,3,4,5,6,7,8,9foreach(int element in number) System.Console.WriteLine(element);,foreach 语句为数组或对象集合中的每个元素重复一个嵌入,while语句例:int i=0; while(i10) Console.Write(i);i+;,while语句,do语句例:int i=0; do(i10) Console.Write(i);i+;while(i10),do语句,3.5.4 跳转语句,break从循环或条件语句中跳出,执行下一条语句continue对循环体内continue语句之后语句不执行,开始下一次循环return将控制返回调用的方法如果返回类型为void,则return可以省略,3.5.4 跳转语句break,3.5.5 方法调用语句,参数的使用在C#中,方法本身只能返回一个值可通过引用类型的参数从方法中获取多个输出值。ref 、out两种参数声明方式Params参数声明方式:声明变长参数列表,3.5.5 方法调用语句参数的使用,1.ref参数,ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数的任何更改都将反映在该变量中。若要使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字。传递到 ref 参数的参数必须初始化,1.ref参数ref 关键字使参数按引用传递。,2.out参数,用法和作用类似于ref参数out参数声明方式不要求变量传递给方法前进行初始化在方法返回前,必须对out参数进行赋值。,2.out参数用法和作用类似于ref参数,注意:在采用引用参数的方法中,多个形参可能表示同一存储位置。例如:class A string s; void F(ref string a, ref string b) s = One; a = Two; b = Three; void G() F(ref s, ref s); ,注意:在采用引用参数的方法中,多个形参可能表示同一存储位置。,3.params参数,用来声明可变长度的参数列表声明时,params参数后面不能再有其他的参数方法声明中只能包含一个params参数。,3.params参数用来声明可变长度的参数列表,using System;public class MyClass public static void UseParams(params int list) for(int i=0;ilist.Length;i+) Console.WriteLine(listi); Console.WriteLine(); public static void UseParams2(params object list) for(int i=0;ilist.length;i+) Console.WriteLine(object)listi); Console.WriteLine(); public static void Main() UseParams(1); UseParams(1,2,3); UseParams2(1,a,”test”); int myarray=new int3 10,11,12; UseParams(myarray); ,using System;,3.5.6 异常处理语句,在程序的执行过程中不可避免地要出现异常情况,包括系统产生的异常以及程序本身产生的异常异常处理机制C#语言提供了对异常处理的内建支持,即通过throw、try、catch、finally语句实现的结构化、统一的、类型安全的异常处理机制。,3.5.6 异常处理语句在程序的执行过程中不可避免地要出现异,1.throw 语句,当在程序的执行过程中遇到异常情况时,例如打开文件失败等,用户就可以使用throw语句报告发生了异常。 格式throw 异常对象异常对象是从System.Exception 类型派生的类的实例,1.throw 语句当在程序的执行过程中遇到异常情况时,例如,2.Try-Catch-Finally语句,try Console.WirteLine(“Executing the try statement.”); throw new NullReferenceException();catch(NullReferenceException e)/捕获特定异常 Console.WirteLine(“0 Caught exception #1.”,e);catch/捕获所有异常 Console.WirteLine(“0 Caught exception #2.”);finally Console.WirteLine(“Executing finally block.”);,2.Try-Catch-Finally语句try,3.5.7 预处理器指令,预处理器指令具有以下功能:有条件的忽略源代码某些部分报告错误和警告条件描述源代码不同区域,3.5.7 预处理器指令预处理器指令具有以下功能:,C#中包含以下几种预处理器指令:1)#define指令该指令用来定义一个符号,然后就可以在#if指令中使用这个符号进行判断。例如:#define DEBUG2)#undef指令取消一个符号的定义(包括已经使用#define指令定义的符号) 例如: #undef DEBUG,C#中包含以下几种预处理器指令:,3)#if、#else、#elif、#endif指令:条件指令,控制编译器的编译过程。例题:#define A #undef Bclass C #if !Avoid F() #elif Bvoid G() #else void H() #endif,3)#if、#else、#elif、#endif指令:条件指,4)#warning,#error #if DEBUG #warning DEBUG is defined #error 使用error指令产生的错误信息5)#region 和#endregion指令用于标记原代码中的一段区域。,4)#warning,#error,3.6 C#类型系统,3.6 C#类型系统,声明变量的内部机制,在.NET程序中,当你声明一个变量,将在内存中分配一块内存。这块内存分为三部分:1,变量名;2,变量类型;3,变量值。,声明变量的内部机制在.NET程序中,当你声明一个变量,将在内,栈和堆,public void Method1() / Line 1 int i=4; / Line 2 int y=2; /Line 3 class1 cls1 = new class1(); ,栈和堆public void Method1(),第1行:当这行代码执行时,编译器为它分配一小块栈内存。运行时栈负责提供程序所需的内存;第2行:程序继续执行。如同名字一样,栈在第一块内存的顶部分配了一块内存。你也可以认为是模块或零件一块一块叠起来;内存的分配与释放遵循后进先出(后进先出)逻辑,换句话说,内存只能在示例中i内存块的顶部分配或释放。第3行:我们创建了一个对象。当该行执行时,编译器在站上创建了一个指针,真实的对象存储在另一种叫“堆”的内存中。堆并不跟踪运行内存,它更像一堆随时可以访问的对象。堆用于动态分配内存。这里需要着重说明的是引用指针是分配在栈上。声明Class1 cls1时并不会给Class1的实例分配内存,而是分配一个栈变量cls1(并设置为null),然后把它指向“堆”。退出方法:当方法退出时,它释放了栈上所有内存变量。换句话说,栈上所有的Int变量都依据后进先出的逻辑被释放掉了。要注意,此时不会释放堆内存,这种内存稍后会被“垃圾收集器”释放。,第1行:当这行代码执行时,编译器为它分配一小块栈内存。运行时,VisualStudio开发环境介绍解析课件,值类型,值类型的数据和内存在同一个位置引用类型是一个指向内存的指针。右图示例是一个整形数据类型变量i被赋给另一个整形数据类型变量j。它们的内存值都分配在栈上。当我们把一个int值分配给另外一个int值时,需要创建一个完全不同的拷贝。换句话说,你可以改变其中任何一个而不会影响另外一个。这种数据类型被称为值类型。,值类型值类型的数据和内存在同一个位置,引用类型,当我们创建一个对象,并把一个对象赋给另外一个对象时,它们的指针指向相同的内存(如右图,当我们把obj赋给obj1时,它们指向相同的内存)。换句话说,我们改变其中一个,会影响到另外一个,这种类型称为引用类型。,引用类型当我们创建一个对象,并把一个对象赋给另外一个对象时,,装箱与拆箱,数据从值类型转变为引用类型的过程称为“装箱”,反之为“拆箱”当我们把一个值类型装箱为引用类型时,数据从栈移动到堆上。反之,数据从堆移动到栈上。这种在堆和栈之间的移动带来了性能的损失。,装箱与拆箱数据从值类型转变为引用类型的过程称为“装箱”,反之,VisualStudio开发环境介绍解析课件,如果编译上面的代码,在ILDASM中看IL代码就会发下如何进行装箱拆箱操作的,如果编译上面的代码,在ILDASM中看IL代码就会发下如何进,装箱拆箱的性能影响为了揭示装箱拆箱如何影响性能,我们把下面代码运行10000次。一个函数有装箱操作,另一个只有简单代码。我们用简单的计时器看它们的运行时间。装箱函数耗时 3542 MS,无装箱操作的耗时2477MS。这说明在实际项目中,除非必须,否则应避免装箱,拆箱操作。,装箱拆箱的性能影响为了揭示装箱拆箱如何影响性能,我们把下面,3.6.1命名空间,namespace NameSpace1 /声明命名空间public class MyClass public override string Tostring()return “You are in NameSpace1.MyClass”;namespace NameSpace2class MyClasspublic static void SayHello() Console.WriteLine(“Hello NameSpace2.MyClass”); 命名空间是个逻辑层次结构,可以理解成文件夹与文件(命名空间与类),3.6.1命名空间namespace NameSpace1,命名空间与类型的名字一起构成类型的完全限定名,惟一地标识一个类型namespace N1 / N1 class C1 / N1.C1 class C2 / N1.C1.C2 namespace N2 / N1.N2 class C2 / N1.N2.C2 ,命名空间与类型的名字一起构成类型的完全限定名,惟一地标识一个,3.6.2 结构类型,自带简单类型:.net类库中相应类的别名,可以直接使用。用户自定义类型:struct关键字 public struct Point:接口名】 public int x,y; public Point(int p1,int p2)x=p1;y=p2; ,3.6.2 结构类型自带简单类型:.net类库中相应类的别名,几点注意:访问修饰符: public,private,protect,internal结构没有父类,也不能作为父类派生,但可以实现接口。结构中可以包含:构造函数,字段,方法,属性,索引器,操作符,嵌入式类型。C#的结构类型中只能定义带参数的构造函数。,几点注意:,3.6.3 枚举类型,从System.Enum类派生。例如:enum Days Sat,Sun,Mon,Tue,Wed,Thu,Fri枚举由一组命名常数组成,称为枚举列表。每个枚举类型有一个底层基本类型,为内建的无符号或有符号整数。第一个元素默认值为0,可以在定义时重新指定。例如:enum Days Sat=1,Sun,Mon,Tue=100,Wed,Thu,Fri枚举类型不包含方法,接口,属性或者事件。,3.6.3 枚举类型从System.Enum类派生。,3.6.4 包装与拆包,每个值类型都有一个与之相对应的引用类型,称为包装类型。包装用来把值类型转换成object类型(引用类型)。例如:using System;class Test static void Main() int i = 123; object o = i; /包装 int j = (int)o; /拆包 ,3.6.4 包装与拆包每个值类型都有一个与之相对应的引用类型,3.6.5 类,类是种引用类型,它可以包含数据成员(常数、字段)和函数成员(方法、属性、索引、事件、构造函数和析构函数),在类中还可以包含嵌入类型。C#中只支持单继承,但可以实现多个接口。派生类将继承基类中除构造函数和析构函数之外的所有成员。,3.6.5 类 类是种引用类型,它可以包含数据成员(常数、,1.类的定义 属性修饰符class 类名:基类列表修饰符:public,protected,internal,private,abstract等。基类列表:表示基类的名称和该类实现的接口。例如: class A class B:A class C:iface1,iface2 class D:B,iface1,1.类的定义,2.构造函数和析构函数Class A public A(int x); A(),2.构造函数和析构函数,3.字段字段表示与对象或类相关的变量,它等同于C+中的成员变量。class A public int a; public static int x=1,y,z=100; public static readonly b=1000; int d;,3.字段,4.方法class A /方法重载 int Method1()return 0; int Method1(int i)return i; int Method1(double b)return b; public void F() Console.WriteLine(“A.F”); /静态方法 public static void Method2()/虚方法 public virtual void G() Console.WriteLine(“A.G”); /抽象方法 public abstract void Method3();/没有实现,4.方法,Class B:A /new 隐藏基类的方法 new public void F() Console.WriteLine(“B.F”); /override 覆盖基类的方法,实现类的多态性 public override void G() Console.WriteLine(“B.G”);/ override实现抽象方法Public override void Method3() Console.WriteLine(“implement abstract method3”);,Class B:A,Class Test static void Main() B b=new B(); A a=b; /父类对象指向子类对象 a.F(); b.F() a.G(); / 调用子类对象的G() b.G(); ,Class Test,Base和this,override void Method1() base.Method1(); /调用基类的方法 this.Method2(); /调用本类的方法,Base和thisoverride void Method1,5.属性属性(property)实质是一种成员方法,但可以像访问字段一样访问它。 属性的组成get方法set方法,5.属性,public class Person private string id; public string Id get return id; set id = value; ,public class AppMain public static void Main() Person p1 = new Person(); p1.Id = “123456”; Console.WriteLine(“0”,p1.Id); ,定义属性,属性标志符Id,私有字段id,调用set方法value隐含的值为“123456”,调用get方法返回id的值,public class Personpublic clas,get方法对成员值进行读操作,不带参数返回类型与返回的成员值类型相同,必须以return或throw语句终止set方法对成员值进行写操作,使用称为value的隐式参数无返回类型只具有get方法的属性称为只读属性只具有set方法的属性称为只写属性,get方法,6.代理代理的对象是方法(指向方法的引用)类似于C+ 中的函数指针代理都是从System.Delegate类派生的,可以代理静态方法或实例方法声明代理时,需要指明代理将要封装的函数原型代理类型的声明属性 修饰符 delegate 返回类型 代理类型名称(形式参数列表);例: delegate int MyDelegate(); 表示MyDelegate可以代理任何没有参数,返回值为int的方法,6.代理,ublic class MyDelegateTest / 步骤1,声明delegate类型 public delegate void MyDelegate(string name); / 定义要传递的方法,它与MyDelegate具有相同的参数和返回值类型 public static void MyDelegateFunc(string name) Console.WriteLine(Hello, 0, name); public static void Main() / 步骤2,创建delegate对象 MyDelegate md = new MyDelegate(MyDelegateTest.MyDelegateFunc); / 步骤3,调用delegate md(sam1111); ,public class MyDelegateTest ,7.事件、事件是一个对象用来通知用户某个动作的发生而发出的消息C#事件建立在代理机制上,当声明一个事件成员时,类就会为它创建一个对应的代理类型的字段或属性在包含事件声明的类外可以使用+=将事件处理程序关联到事件成员上,使用-=从事件成员中删除关联的事件处理程序,7.事件、,using System;public delegate void MyDlg();public class MyClass public event MyDlg MyEvent; public void FireAway() if (MyEvent != null) MyEvent(); public class MainClass static private void f() Console.WriteLine(当事件发生时调用这个方法); static public void Main() MyClass mc = new MyClass(); mc.MyEvent += new MyDlg(f); mc.FireAway(); Console.ReadLine();,定义一个代理MyDlg(),声明事件对象MyEvent,调用事件,把方法加到事件,即定义事件,方法与代理类型相同,using System;定义一个代理MyDlg()声明事件,建立事件代理的步骤,定义delegate对象类型定义一个类,该类中包含事件成员及触发事件的方法。在另一个类中定义事件处理方法,它应当与delegate对象具有相同的参数和返回值类型用+=操作符将事件处理程序和事件进行绑定 (-=操作符取消事件的绑定)在适当的地方调用事件触发方法触发事件,建立事件代理的步骤定义delegate对象类型,8.接口1)接口的定义接口定义了一个契约(协议)所有实现接口的类或结构都必须要遵守这个契约接口独立于类,它规定了类之间交互的标准接口定义格式 属性 修饰符 interface 接口名:基接口列表 /语句 ,8.接口,ublic interface IShowInfo /定义一个接口 int x / 属性 get; /没有实现的 set; void ShowInfo(); ,接口名称一般用大写I开头,public interface IShowInfo /,2)接口的组成方法在接口中只能包含方法而不能包含变量或常量属性属性是方法索引器索引器是方法事件,2)接口的组成,89,interface INumber int x get; set; int y get; set; ,class Number:INumber private int myX; private int myY; public Number(int x,int y) myX = x; myY = y; public int x get return myX; set myX = value; ,public int y get return myY; set myY = value; ,class AppMain private static void WritePoint(INmuber p) Console.WriteLine(“x=0, y=1”,p.x,p.y); public static void Main() Number p = new Number(1,2); Console.Write(“Number is :”); WritePoint(p); Consol.ReadLine(); ,定义接口,实现接口中方法,接口p作为参数,定义Number的实例,接口的实现,不能用new INUmber,可以用INumber p = new Number(1,2);,89class Number:INumberpublic i,9.object和string类型object类型对应于NET框架类库中的System.Object类。C# 中的所有类型都从这个类型继承;可以把任何类型的值赋给object类型的变量。包装和折包操作所处理的引用类型就是object类型。 string类型对应于.NET框架类库中的System.String类,它表示一个Unicode字符串。用户可以直接在字符串类型上执行+、=、!操作,并可以使用操作符,索引从0开始,9.object和string类型,using System;class MyClasspublic I = 100; class test public static void Main( string args) object o;o = 1;/包装 Console.WriteLine(o); Console.WriteLine(o.GetType(); o = new MyClass(); MyClass myobj;myobj = (MyClass)o;/拆包Console.WriteLine(myobj.i); char x = “test”2; ,using System;,10.数组数组是引用类型,从.NET框架类库中的抽象基类System.Array派生。例:int sdArray =new int10; int, mdArray =new int2,4; int sdArray =new int1,3,5,7,9; int, mdArray =new int,1,2,3,4; int sdArray =1,3,5,7,9; /声明和初始化分开 int sdArray; sdArray = new int1,3,5,7,9;,10.数组,第四章 第1个 windows应用程序,本章要点概述创建窗体设置窗体的属性 处理窗体的事件 对话框添加菜单多文档界面,第四章 第1个 windows应用程序本章要点,什么是窗体(Form),窗体是Windows桌面应用程序的基本单位窗体主要用于接收用户的输入向用户显示信息窗体对象包括属性(定义窗体外观)方法(定义窗体行为)事件(定

    注意事项

    本文(VisualStudio开发环境介绍解析课件.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开