C#--方法
C#的代码包装
三种实现途径:方法、类和名字空间。
• 方法是包含一系列语句的代码块。
• 类用于组合类,方法,属性。
• 将多个相关类组合成名字空间。
静态方法和静态变量
• 静态成员
在类中,使用static修饰符声明的成员称为静态成员(包括静态 变量和静态方法)。
静态成员属于类成员,其访问形式为:
类名.静态成员名 或 静态成员名 (在本类的成员方法中 )
• 静态变量
使用static修饰的字段(域)称为静态变量。
类中的静态变量仅分配一块存储区域。
静态变量在整个程序运行期间都是存在的(静态变量不能被撤销)。
• 静态方法
使用static声明的方法称为静态方法。
静态方法只允许访问类的静态成员,而不允许访问其非静态成员—— 即实例成员。
非静态方法可以访问类中的任何成员(包括静态成员和非静态成员)。
方法参数修饰符
• 方法中的参数分为值参数和引用参数。
对应四种修饰:ref,out, params和无修饰符(默认)。
无修饰符的参数和params参数-按值方式传递
ref和out修饰的参数-按引用方式传递
1. 值参数(即无任何修饰符标记的参数)
值参数采用值方式传递(即默认的传递方式)。
值传递是指在进行方法调用时,系统将实参的值(包括引用变量的值) 复制给形参变量(这时,形参实际是实参值的一个副本)。
方法中使用和修改的是“副本”,并不影响实参的值。
值传递是一种安全的传递方式。
2. 引用参数(使用ref修饰符标记的参数)
引用参数采用引用传递。
引用传递是将实参的引用(即实参变量的地址)复制给形参,这 时,形参作为实参的别名与实参共享同一内存单元。
方法中使用形参就如同使用实参,形参值变了,实参值也就变了。
3. 输出参数(使用out修饰符标记的参数)
输出参数与引用参数类似,也是采用引用传递。
在C#中,通过设置输出参数,可从方法中传回更多的数据值。
与引用参数不同,out实参变量可以不提供初值。
注意:
1. 对于输出参数,形参和实参都必须用out进行标识。
2. out实参在方法调用前不必赋以初值,但在方法中必须为out形参提供数 据值(作为该参数的返回值)
参数传递的隐式转换与强制转换
• 方法调用中,若实参值与形参类型不同,默认情况下系统会依照“类型转 换规则”隐式地将实参值转换成形参类型传递给形参。
• 例如:Math类的方法Sqrt,参数声明为double型,但可以使用整型参数调 用。Console.WriteLine(Math.Sqrt(9));
• 能正确求值,输出值为3.0。
• 在C#中,系统会依照“类型转换规则”隐式地将int值9转换成9.0,然后传 入Sqrt方法
方法重载
• 方法重载
可定义两个或两个以上的同名方法,这些方法可以完成不同的功能, 编译器能根据方法的调用形式合理选择一个方法进行调用。
• 构成重载的方法具有以下特点:
(1)方法名相同;
(2)方法参数列表不同,即满足如下三点之一即可。
方法参数数目不同;
方法拥有相同数目的参数,但参数的类型不一样;
方法拥有相同数目的参数和参数类型,但是参数类型出现的先 后顺序不一样。
特别提醒:构成重载的方法与方法的返回值类型无关
可选参数和命名参数
1. 可选参数(即带有默认值的形参)
是指在声明方法时给形参指定默 认初值,这样在调用该方法时可省略实参。
public static int Days(int day,int month,int year=2015) { … }
其中:形参year为可选参数,默认初值是2015。
例如: 方法调用-Days(18,2) 方法调用-Days(18,2,2014)
说明:可选参数必须位于所有必选参数之后,即可选参数出现在 参数列表的右端
2. 命名参数
是指调用方法时,可为实参指定一个形参名,作用是将该实参传 递给指定的形参,这样参数结合时与参数位置次序无关。
形式为:形参名:实参
如:使用命名参数调用Days方法:
Days(month:2,day:18)
Days(year:2015,month:2,day:18)
按值传递与按引用传递
• 值类型参数不都是按值方式传递,引用类型参数也并非都是按引用方式传递。
例如:
方法声明1:public void Test1(int a){…} 形参a是整数类型,属于值类型。
方法声明2:public void Test2(int[] array){…} 形参array是数组,属于引用类型。
但它们的传递方式相同,均采用“按值传递”。
.NET 框架类库
• .NET框架类库(即FCL)是生成.NET 应用程序、组件和控件的基础。
• .NET框架类库由多个预定义的名字空间构成,而每一个名字空间又是由预 定义的多个相关的类组成。
• 名字空间中类型使用点语法命名方案,全名的第一部分(最右边的点之前 的内容)是名字空间名。全名的最后一部分是类型名。
例如,System.Console表示Console类型,该类型属于System名字空间。
使用using指令时后,当使用FCL中的库类时,可不必指定名字空间名。
例如,程序中使用如下指令: using System;
程序使用System名字空间中类(如Console)时,可省略该名字空间名,而直接使 用类名。
如:Console.Writeline(); 与 System.Console.Writeline();等价。
声明的作用域
• 方法参数声明的作用域是声明所在的方法体。
• 局部变量的声明的作用域从声明点开始,到声明所在块结束为止。
• for语句首部的局部变量声明的作用域是for语句体和首部的其他表达式。
• 类中成员(如方法、属性、字段)的作用域是整个类体。因此类的非静 态方法与属性可以使用类中的任何成员,而静态方法与属性只能使用类 中的静态成员。
另外,在类的声明中,如果方法中的局部变量或参数与方法所在类中的 字段名同名,则在方法中将隐藏该字段。但可通过this.字段名的形式使 用实例中的字段。
递归
递归是计算机科学的一个重要概念,递归方法是程序设计中有效的方法,采用 递归编写程序能使程序变得简洁和清晰。
• 利用递归算法可以将一个规模较大的问题转化为规模较小的同类问题 来求解。
例如:数学上常见的一个问题-计算一个非负整数n!
计算n!,只要计算出(n-1)!,则n!=n.(n-1)! 计算(n-1)!,只要计算出(n-2)!,则(n-1)!=(n-1).(n-2)! 计算(n-2)!,只要计算出(n-3)!,则(n-2)!=(n-2).(n-3)! … 计算3!,只要计算出2!,则3!=3.(2!) 计算2!,只要计算出1!,则2!=2.(1!) 而1!=1 (注:0!定义为1)
相关文章:
C#--方法
C#的代码包装 三种实现途径:方法、类和名字空间。 • 方法是包含一系列语句的代码块。 • 类用于组合类,方法,属性。 • 将多个相关类组合成名字空间。 静态方法和静态变量 • 静态成员 在类中,使用static修饰符声明的成员称为静态…...
前端权限控制
前端权限控制 一、路由权限(控制页面访问) vue // router.js const routes [{path: /dashboard,name: Dashboard,component: () > import(/views/Dashboard.vue),meta: { requiresAuth: true, roles: [admin, manager] }},{path: /user,name: Use…...
mac下载安装jdk
背景 长时间不折腾mac全部忘记 特此记录 安装 1.下载jdk 根据需要下载对应的jdk 我直接 下载到/Applicatiions目录 https://www.oracle.com/java/technologies/downloads/#java8-mac 2.解压 cd /Applicatiions tar -zxvf jdk-8u431-macosx-x64.tar.gz 3.配置环境 …...
在线PS工具:UI设计的创新选择
对于刚踏入UI设计领域的新手来说,选择合适的在线Photoshop替代工具是至关重要的。市场上存在众多的在线设计工具,让人难以抉择。以下是10个值得尝试的在线PS工具,希望能帮助你找到最适合你的那一款。 Adobe Photoshop Photoshop是设计师们长…...
生成式AI概览与详解
1. 生成式AI概览:什么是大模型,大模型应用场景(文生文,多模态) 生成式AI(Generative AI)是指通过机器学习模型生成新的数据或内容的人工智能技术。生成式AI可以生成文本、图像、音频、视频等多种…...
数据结构与算法学习笔记----树与图的深度优先遍历
数据结构与算法学习笔记----树与图的深度优先遍历 author: 明月清了个风 first publish time: 2024.12.9 pa⭐️这里只有一道题哈哈。 Acwing 846.树的重心 给定一棵树,树中包含 n n n个节点(编号 1 ∼ n 1 \sim n 1∼n)和 n − 1 n - 1 n…...
IEEE T-RO 软体机器人手指状态估计实现两栖触觉传感
摘要:南方科技大学戴建生院士、林间院士、万芳老师、宋超阳老师团队近期在IEEE T-RO上发表了关于软体机器人手指在两栖环境中本体感知方法的论文。 近日,南方科技大学戴建生院士、林间院士、万芳老师、宋超阳老师团队在机器人顶刊IEEE T-RO上以《Propri…...
【NLP 14、激活函数 ② tanh激活函数】
学会钝感力,走向美好的方向 —— 24.12.11 一、tanh激活函数 1. tanh函数的定义 tanh是双曲正切函数(Hyperbolic Tangent),数学表达式为 其函数图像是一个S型曲线,以原点 (0,0) 为中心对称,定…...
前端如何实现签名功能
1.JS实现 前端实现签名功能,通常是通过在页面上创建一个可绘制的区域,用户可以用鼠标或触摸设备进行签名。这个区域通常是一个<canvas>元素,结合JavaScript来处理绘制和保存签名。下面是一个简单的实现步骤: 1.1. 创建HTM…...
若依将数据库更改为SQLite
文章目录 1. 添加依赖项2. 更新配置文件 application-druid.yml2.1. 配置数据源2.2. 配置连接验证 3. 更新 MybatisPlusConfig4. 解决 mapper 中使用 sysdate() 的问题4.1. 修改 BaseEntity4.2. 修改 Mapper 5. 更新 YML 配置 正文开始: 前提条件:在您的…...
CRMEB Pro版v3.2源码全开源+PC端+Uniapp前端+搭建教程
一.介绍 crmeb pro版 v3.2正式发布,全新UI重磅上线,焕然一新,不负期待!页面DIY设计功能全面升级,组件更丰富,样式设计更全面;移动端商家管理,让商城管理更便捷,还从页面…...
Docker 安装 Jenkins:2.346.3
准备:已安装Docker,已配置服务器安全组规则 1581 1、拉取镜像 [rootTseng ~]# docker pull jenkins/jenkins:2.346.3 2.346.3: Pulling from jenkins/jenkins 001c52e26ad5: Pull complete 6b8dd635df38: Pull complete 2ba4c74fd680: Pull complet…...
【OpenCV】模板匹配
理论 模板匹配是一种在较大图像中搜索和查找模板图像位置的方法。为此,OpenCV 带有一个函数 cv.matchTemplate() 。它只是在输入图像上滑动模板图像(如在 2D 卷积中),并比较模板图像下的模板和输入图像的补…...
黑马商城微服务复习(5)
MQ 一、同步调用和异步调用1. 同步调用2. 异步调用 二、RabbitMQ1. 基础使用2. 实际操作 怎么用?3. RabbitMQ虚拟主机 数据隔离4. 在JAVA中实现RabbitMQ5. 交换机种类 一、同步调用和异步调用 1. 同步调用 微服务一旦拆分,必然涉及到服务之间的相互调用ÿ…...
云原生基础设施指南:精通 Kubernetes 核心与高级用法
1. 云原生的诞生 随着互联网规模的不断增长,以及企业对敏捷开发、快速交付和高可用性的需求日益增强,传统的单体架构逐渐暴露出局限性,难以满足现代业务对动态扩展和高效迭代的要求。为此,云原生应运而生。 云原生是为云计算时代…...
人工智能概要
目录 前言1.什么是人工智能(Artificial Intelligence, AI)2.人工智能发展的三次浪潮2.1 人工智能发展的第一次浪潮2.2 人工智能发展的第二次浪潮2.3 人工智能发展的第三次浪潮 3.人工智能发展的必备三要素3.1 数据3.2 算法(algorithm…...
qt QCommandLineParser详解
1、概述 QCommandLineParser是Qt框架中提供的一个类,专门用于解析命令行参数。它简化了命令行参数的处理过程,使得开发者能够轻松定义、解析和验证命令行选项和参数。QCommandLineParser适用于需要从命令行获取输入的控制台应用程序,以及需要…...
力扣 K个一组翻转链表
K个一组翻转链表 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) : val(x), next(ne…...
cnocr配置及训练测试
cnocr配置及训练测试 1,相关链接2,已有模型调用测试(1)下载相关模型(2)Cnstd文本检测模型(3)模型调用解析脚本 3,自定义数据集训练测试(1)标签转换…...
解决 Flutter 在 Mac 上的编译错误
解决 Flutter 在 Mac 上的编译错误 在使用 Flutter 进行项目开发并尝试在 Mac 设备上进行编译时,遇到了一系列的错误信息,这些错误信息给项目的构建与部署带来了阻碍。 一、错误详情 在编译过程中,Xcode 输出了大量的信息,其中…...
MR30分布式IO在新能源领域加氢站的应用
导读 氢能被誉为21世纪最具发展潜力的清洁能源,氢能科技创新和产业发展持续得到各国青睐。氢能低碳环保,燃烧的产物只有水,是用能终端实现绿色低碳转型的重要载体。氢能产业链分别为上游制氢、中游储运以及下游用氢。上游制氢工艺目前大部分…...
wxPython中wx.ListCtrl用法(二)
wx.ListCtrl是一个列表组件,可以以列表视图(list view)、报表视图(report view)、图标视图(icon view)和小图标视图(small icon view)等多种模式显示列表。 一、方法 __…...
kubernetes 资源汇总
kubernetes 资源汇总 官网 英文文档 官方英文文档 中文文档 官方中文文档 github github源码地址 培训认证 也就是linux基金会的认证,上面也提供培训课程 下载资源 官网下载资源,国内的话k8s镜像下载不了,要去镜像站 在线练习 killer…...
每日一题(对标gesp三级答案将在第二天公布)
编程题 题目描述: 小杨为数字4,5,6和7设计了一款表示形式,每个数字占用了66的网格。数字4,5,6和7的表示形式如下(此处自行设计复杂一些的表示形式示例): 数字4: …. …. …. …. *… 数字5: …...
让 Win10 上网本 Debug 模式 QUDPSocket 信号槽 收发不丢包的方法总结
在前两篇文章里,我们探讨了不少UDP丢包的解决方案。经过几年的摸索测试,其实方法非常简单, 无需修改代码。 1. Windows 下设置UDP缓存 这个方法可以一劳永逸解决UDP的收发丢包问题,只要添加注册表项目并重启即可。即使用Qt的信号与槽&#…...
Python爬虫之使用BeautifulSoup进行HTML Document文档的解析
BeautifulSoup 是一个用于解析 HTML 和 XML 文档的 Python 库,它为开发者提供了一种简单的方式来查找、遍历和修改文档树。BeautifulSoup 特别擅长处理不规则或格式不佳的标记语言,可以自动更正无效的 HTML,因此在网页抓取(Web Sc…...
vue.config.js配置参数说明新手教程
这篇文章主要是对vue.config.js配置文件的主要参数进行一下说明,方便使用时的查询, 下面进行介绍 1、vue.config.js vue.config.js 是一个可选的配置文件,如果项目的 (和 package.json 同级的) 根目录中存在这个文件,那么它会被…...
C# 关于加密技术以及应用(二)
AES(Advanced Encryption Standard)和 RSA(Rivest-Shamir-Adleman)是两种不同的加密算法,它们各自有特定的使用场景和优势。下面是它们的主要区别和适用场景: AES(高级加密标准) 特…...
视频中的某些片段如何制作GIF表情包?
动态表情包(GIF)已经成为我们日常沟通中不可或缺的一部分。GIF(Graphics Interchange Format),即图形交换格式,是一种支持多帧图像和透明度的位图文件格式。它最初由 CompuServe 公司在 1987 年推出&#x…...
图像识别 | Matlab基于卷积神经网络(CNN)的宝可梦识别源程序,GUI界面。附详细的运行说明。
图像识别 | Matlab基于卷积神经网络(CNN)的宝可梦识别源程序,GUI界面。附详细的运行说明。 目录 图像识别 | Matlab基于卷积神经网络(CNN)的宝可梦识别源程序,GUI界面。附详细的运行说明。预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab基…...
代做设计网站/百度蜘蛛池自动收录seo
随着移动互联网的发展,各行各业纷纷引入了移动端相关测试技术,很多公司都已经研发了基于Web前端与App端的相关应用程序,为了更好的保证软件测试的质量,移动端自动化测试已走进测试世界,随着终端特性的多机化࿰…...
男人和男人做爰漫画网站/百度推广河南总部
pandas 安装方法:pip3 install pandas pandas是一个强大的Python数据分析的工具包,它是基于NumPy构建的模块。 pandas的主要功能: 具备对其功能的数据结构DataFrame、Series 集成时间序列功能 提供丰富的数学运算和操…...
海外购物商城/网页怎么优化
1. :before 和 :after 的主要作用是在元素内容前后加上指定内容,示例: HTML代码: <p>你好</p> CSS代码: p:before{content: Hello;color: red; } p:after{content: Tom;color: red; } 效果如图: 以上代…...
如何利用淘宝建设网站挣钱/微信朋友圈推广软文
工具下载地址: http://www.anysql.net/tools/sqluldr2-non-free-features.html 右侧下载SQLULDR2 分别对应32为,64位的win和Linux平台 安装步骤 1.需要安装oracle_client 2.复制sqluldr2_linux32_10204.bin(64位系统用sqluldr2_linux64_102…...
dw里响应式网站怎么做/武汉seo收费
安装[rootzdw ~]# yum -y install lrzszrz是上传sz下载转载于:https://blog.51cto.com/zhaodongwei/1758362...
怎么在一个网站做多个页面/网站推广seo
什么是盲注? 当应用程序易受SQL注入攻击,但其HTTP响应不包含相关SQL查询的结果或任何数据库错误的详细信息时,就会出现盲SQL注入。 对于盲目SQL注入漏洞,许多技术(如联合攻击)都是无效的,因为…...