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 输出了大量的信息,其中…...
IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...
「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
在移动互联网营销竞争白热化的当下,推客小程序系统凭借其裂变传播、精准营销等特性,成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径,助力开发者打造具有市场竞争力的营销工具。 一、系统核心功能架构&…...
基于开源AI智能名片链动2 + 1模式S2B2C商城小程序的沉浸式体验营销研究
摘要:在消费市场竞争日益激烈的当下,传统体验营销方式存在诸多局限。本文聚焦开源AI智能名片链动2 1模式S2B2C商城小程序,探讨其在沉浸式体验营销中的应用。通过对比传统品鉴、工厂参观等初级体验方式,分析沉浸式体验的优势与价值…...




2. 引用参数(使用ref修饰符标记的参数)











