还剩29页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
函数基础C#中的函数是代码的基本组成单元负责执行特定的任务本课程将深C#,入探讨函数的定义、调用、参数传递等核心概念帮助您掌握函数的C#,基础知识函数概念C#函数的作用函数的组成函数的调用函数是一种能够封装特定任务的代每个函数都由函数名、参数列表、返程序可以通过调用函数来执行相应的C#码块可以根据需要被调用执行它可回类型和函数体等部分组成用于定义任务并可以传递参数给函数同时也可,,,,以提高代码的模块化和重用性函数的功能和行为以获取函数的返回值函数的定义格式函数声明1定义函数名称、输入参数和返回类型方法体2函数内部的代码逻辑语句return3向调用方返回计算结果函数的定义包含三个主要部分函数声明、方法体和语句函数声明描述了函数的名称、输入参数和返回类型方C#:return法体包含了函数内部的具体代码逻辑最后语句用于将计算结果返回给调用方这三个部分共同构成了一个完整的,return函数定义C#函数参数类型参数类型函数可以接受各种基本数据类型的参数,如整型、浮点型、字符串等还可以使用引用类型如对象和数组作为参数参数传值参数默认以值传递的方式传入函数,即函数内部不会影响到外部变量的值也可以使用引用传递方式参数个数函数可以定义任意个数的参数并且参数类型可以不同但参数个数和类型必须与函数调用时实际传入的参数一致函数参数传递方式按值传递按引用传递输出参数可选参数在函数内部对参数进行修在函数内部对参数进行修通过关键字传递的参数可选参数在调用函数时可out改不会影响原始值适用改会影响原始值适用于可以用于返回多个值函以省略提供默认值可以于基本数据类型如整型、复杂数据类型如数组、类数内部可以修改输出参数增加函数的灵活性浮点型等等的值函数返回值返回类型定义语句return12函数的返回类型是在定义使用语句可以从函return函数时指定的,可以是任数中返回一个值,该值的何数据类型类型必须与函数声明中的.NET返回类型匹配多个返回值异常处理34可以使用和关键字当函数无法正常返回时,out ref返回多个值,或者返回一可以抛出异常来表示失败个包含多个数据的对象调用者需要捕获并处理这些异常函数重载同名不同参数常见应用场景参数类型差异在同一个类中可以定义多个名称函数重载常用于构造函数、数学运重载函数的参数可以有不同的数据,相同但参数不同的函数这就是函算符重载以及常见的实用方法等类型、个数或顺序系统会根据实,,数重载根据实际传入的参数系可以增强代码的可读性和灵活性际的参数自动选择最佳匹配的函数,统会自动调用对应的函数实现进行调用局部变量和全局变量局部变量全局变量区别局部变量是在函数内部定义的变量只全局变量是在类或命名空间外部定义局部变量的生命周期仅限于定义它的,能在该函数内部使用函数外部无法访的变量可以在整个程序中访问和修改函数而全局变量的生命周期贯穿整个,,,问作用域仅限于定义它的块或函数全局变量的作用域覆盖整个应用程序程序的运行合理使用两种变量可以增强代码的可读性和可维护性递归函数定义与特点1递归函数是一个通过调用自身来解决问题的函数其特点是重复调用自身并逐步缩小问题规模,直至达到基线条件并返回结果应用领域2递归在数学、计算机科学、数据结构等领域广泛应用如阶,乘计算、斐波那契数列、树形结构遍历等优缺点3递归函数实现简洁优雅但由于每次调用都需要分配内存空,间所以效率可能较低且存在堆栈溢出的风险,,匿名函数什么是匿名函数?匿名函数的优势匿名函数是没有名称的函数也称为表达式它们匿名函数可以快速创建一次性的小型函数无需定义单独的,lambda,可以直接作为参数传递给其他方法提高代码的灵活性和简方法它们特别适用于需要简单逻辑的情况提高代码的可,,洁性读性表达式Lambda简洁和灵活即时功能表达式提供了一种简表达式可以在代码中Lambda Lambda洁且灵活的方式来定义匿名即时定义和使用功能无需创,函数使代码更为精简建单独的方法,类型推断支持LINQ表达式利用的类表达式在查询Lambda C#Lambda LINQ型推断功能减少了手动指定中广泛使用提供了强大的数,,类型的需要据处理能力扩展方法灵活性可重用性扩展方法提供了向现有类型扩展方法可在多个地方重复添加新功能的灵活方式无使用提高代码的可重用性,,需修改原始代码或创建新的和可维护性类型语法简单功能丰富使用扩展方法时就像调用扩展方法可以为现有类型增,原有类型的方法一样简单直加各种有用的功能如转换、,观查找、排序等事件事件监听器事件监听器是监听特定事件并响应的对象它们会捕获并处理相应的事件事件定义事件是由对象在特定情况下引发的信号事件定义了对象可能发生的各种情况事件委托事件委托定义了事件的签名,用于将事件与处理程序关联起来事件处理程序事件委托事件订阅事件参数事件处理程序是由事件委托定义的方通过订阅事件,事件处理程序可以被事件处理程序通常会接收事件参数对法它接收事件参数并处理事件引发注册到相应的事件上这样可以确保象作为参数,该对象包含了与事件相时的逻辑事件发生时能够及时调用事件处理程关的信息这可以帮助处理程序更好序地理解和处理事件事件订阅和取消订阅订阅事件1通过运算符将事件处理程序关联到事件+=取消订阅2通过运算符将事件处理程序从事件中移除-=事件的生命周期3事件的订阅和取消订阅要匹配避免内存泄漏,事件订阅是将事件处理程序与事件关联起来这样当事件被触发时相应的处理程序就会被执行取消订阅则是将事件处理,,程序从事件中移除避免不必要的事件触发事件的生命周期管理非常重要要确保订阅和取消订阅操作匹配防止内存泄漏,,,事件委托委托定义委托声明12委托是一种特殊的数据类委托声明包括返回类型、型用于封装具有特定参数方法名称和参数列表用于,,签名和返回类型的方法创建委托实例委托实例化委托调用34使用关键字来实例化可以通过委托实例调用其new委托并将其与特定的方法绑定的方法并传递适当的,,绑定参数事件参数事件参数概述常见事件参数类型事件参数是在触发事件时传递给事件处理程序的数据它常见的事件参数类型包括事件源对象、鼠标位置、键盘按提供了有关事件发生的上下文信息帮助开发者更好地理解键、时间戳等这些参数可以用于确定事件发生的具体情,和响应事件况泛型函数灵活性类型安全泛型函数允许使用占位符类使用泛型可以在编译时检查型参数可以在调用时指定具类型确保代码在运行时不会,,体的类型提高了代码的灵活出现类型转换错误,性和重用性代码复用性能优化泛型函数可以针对多种数据编译器可以针对不同的数据类型重复使用相同的算法逻类型生成特定的代码提高代,辑避免重复编写相同功能的码的执行效率,代码泛型类型约束强类型约束使用泛型时可以对类型参数施加约束,确保它必须实现某些接口或从某些类型派生这有助于提高代码的类型安全性类型继承关系通过泛型类型约束,可以指定类型参数必须是某个基类或实现某些接口,帮助我们编写更加健壮和可维护的代码无参构造函数有时我们需要确保类型参数可以被实例化,这时可以添加where T:new约束,要求类型参数必须有无参构造函数可变参数列表灵活性易用性可变参数列表允许函数接受使用可变参数列表无需为每,可变数量的参数增加了函数种情况定义单独的函数使代,,的灵活性和适应性码更简洁易用性能优化表达力可变参数列表可以提高性能可变参数列表使得函数的参,减少函数重载和参数定义的数定义更加直观和富于表现开销力关键字params概述用法示例优势关键字用于定义可变参数列表在函数声明中使用关键字可以关键字避免了需要预先声明函params,params,params允许将一个或多个实参传递给函数接收可变数量的参数这些参数将被数参数的限制使函数更加通用和灵活,这使函数更加灵活可以处理未知数量转换为数组类型可以在函数内部进行这可以大大提高代码的可维护性和扩,,的参数处理展性和关键字out ref参数传递输出参数引用参数和关键字用于改变参数传递方式关键字用于定义输出参数方法可以关键字用于定义引用参数方法可以out ref,out,ref,允许方法修改参数的值通过这些参数将值返回给调用者直接修改参数的值函数的重载解析参数个数不同同一个函数名可以有不同数量的参数编译器会根据调用时传递的参数个数来确定调用哪个版本的函数参数类型不同同一个函数名可以有不同类型的参数编译器会根据参数的类型来确定调用哪个版本的函数参数顺序不同同一个函数名可以有相同类型的参数,但是参数的顺序不同编译器会根据实际传入的参数顺序来选择合适的函数版本函数的调用过程函数调用1应用程序通过调用函数开始执行函数体内的代码参数传递2将实际参数传递给形式参数函数体执行3执行函数体内的代码逻辑返回值4将函数的计算结果返回给调用方函数调用过程包括函数调用、参数传递、函数体执行以及返回值等步骤调用方通过向函数传递实参来触发函数的执行函数执行完毕后将,计算结果返回给调用方整个过程构成了函数调用的完整流程函数的作用域局部作用域全局作用域命名空间作用域类作用域函数内部定义的变量和常在类或命名空间外部定义在命名空间内部定义的变在类内部定义的变量和方量仅在该函数内部可见和的变量和常量具有全局作量和类型具有命名空间作法具有类作用域仅在该类,访问这被称为局部作用域用域可以在整个程序中访用域可以在该命名空间内内部可见和访问它们可,,,它们的生命周期仅在函数问和使用它们的生命周部访问和使用这有助于以被实例化的对象使用执行期间期贯穿整个程序的运行组织和管理代码关键字this对象访问构造函数调用关键字用于访问当前对象的成员在构造函数内部使用可以调用this this变量和方法它可以帮助我们清晰同一类中的其他构造函数这样可地区分局部变量和成员变量以避免重复编码方法链式调用返回的方法可以实现方法的链式调用增强代码的可读性和编程的流畅性this,关键字static静态方法静态变量静态类关键字可用于定义静态类成员包使用关键字定义的变量是全局变静态类只包含静态成员不能被实例化static,static,括方法、属性和字段静态方法不需量可被类的所有实例访问和修改静静态类通常用于提供工具方法和常量,,要实例化类就可以访问和调用态变量在类第一次被实例化时初始化方便在代码中随时调用静态构造函数初始化操作线程安全延迟加载静态构造函数用于在类型被首次使静态构造函数保证在多线程环境下静态构造函数在第一次访问该类型,用时执行复杂的初始化操作如读初始化操作只会被执行一次确保时才会被执行实现了类型的延迟,,,取配置文件、建立数据库连接等线程安全加载静态类静态类定义静态类是仅包含静态成员的特殊类它不能被实例化,使用时需要直接通过类名进行访问静态成员静态类中的所有成员都是静态的,包括字段、属性、方法和事件它们不需要实例化就可以访问应用场景静态类通常用于提供一些公用的工具方法或常量,不需要保存任何实例状态它们能提高代码的简洁性和执行效率函数指针定义与声明使用场景12函数指针是指向函数的指函数指针常用于回调函数、针变量,可以用来存储函事件处理、动态调用等场数的地址并调用它景,提高代码的灵活性和可扩展性语法格式优缺点34返回类型指针变量函数指针可以实现动态绑*名参数列表函数名定和灵活调用,但需要注=;意类型匹配和内存管理委托类型委托的定义委托的用途委托的特点委托的应用场景委托是一种用于封装方法委托主要用于事件驱动编委托是一种强类型的方法委托广泛应用于事件处理、的数据类型可以作为参数程支持回调方法以及实指针可以指向具有相同签回调函数、查询、异,,,,LINQ传递给其他方法或者从方现泛型算法等通过委托名的任何方法委托可以步编程等场景是中实,,C#法返回委托允许将方法可以实现更灵活的、模块指向实例方法或静态方法现高阶函数编程的重要基,作为参数传递给其他方法化的代码结构也支持匿名方法础。
个人认证
优秀文档
获得点赞 0