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 输出了大量的信息,其中…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...

2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)
LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 题目描述解题思路Java代码 题目描述 题目链接:LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...

MySQL:分区的基本使用
目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区(Partitioning)是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分(分区)可以独立存储、管理和优化,…...
xmind转换为markdown
文章目录 解锁思维导图新姿势:将XMind转为结构化Markdown 一、认识Xmind结构二、核心转换流程详解1.解压XMind文件(ZIP处理)2.解析JSON数据结构3:递归转换树形结构4:Markdown层级生成逻辑 三、完整代码 解锁思维导图新…...