当前位置: 首页 > article >正文

C#方法作用

C#方法

方法的定义与调用

首先我们要知道什么是方法,为什么要去使用方法?

方法就是把一些相关的语句组织在一起,用来执行的语句块

每一个C#程序至少有一个带有Main方法

   static void Main(string[] args){   //方法的定义,一般情况下,写在一个类中// 格式: 访问修饰符  返回值  方法的名字(){// 方法体// }//访问修饰符: public 公开的//返回值类型 :  void  没有返回值//方法的名字: 随便定义即可   以大驼峰命名Test();
}public static void Test(){Console.WriteLine("我是一个方法");}

方法的参数

   static void Main(string[] args){//方法的参数//参数: 形参和实参//形参: 形式参数,方法在定义的过程时候,生命在括号里面的变量,这个参数由实参决定//实参: 实际参数,方法在调用的时候,写在括号里面的数据,这个数据就会赋值给对应的形参Test("实参");TestT(5);TestTT(3, "实参");// TestTT( "实参",3); 这个构造函数的位置顺序要一样//注意,参数位置必须一致}public static void Test(string name){//实参传递什么,形参就是什么Console.WriteLine(name);}public static void TestT(int number){for (int i = 0; i < number; i++){Console.WriteLine("你好");}}public static void TestTT(int number,string name){for(int i = 0;i < number;i++){Console.WriteLine(name);}}

方法的返回值

  static void Main(string[] args){//方法返回值  int string void Num(10,20);}//方法通过返回值,将方法内部得到的结果返回给调用的地方//需要在定义方法的时候,指定方法的返回值类型,如果没有返回值   写voidpublic static int Num(int x,int y){return x + y;//注意:return关键字不仅用于返回数据,还可以用于终止方法的执行(return后面的方法就不会执行)}

方法参数的传递

  1. 值传递:传递的是变量,方法内部改变不会受外界影响

  2. 引用传递:传递的是内存地址,方法内部改变,外部也会受到影响
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace 方法返回值
{internal class Program{static void Main(string[] args){//值传递  --------传递值类型//方法在调用的时候,如果传入的是变量,或者表达式,都会先进行计算,然后进行传递//方法调用传递变量,传递过去的是这个表达式或者变量的值,而不是变量本身int a = 10;int b = ++a;Test(b);      //11Test(b + 10); //21Console.WriteLine("b的值是"+b);//11// 值传递-----传递引用类型//当给方法传递一个引用类型的时候,传递的也是变量里面里面保存的值//只不过引用类型的变量存储的是内存地址,所以传递进入的是内存地址,相当于两个地方操作的是一个内存地址,一个改变,另一个也会改变People people = new People() { Name = "马超" };TestT(people);Console.WriteLine(people.Name);}public static void Test(int x){Console.WriteLine("传入的参数式"+x);x = 40;//内部改变,外部输出,不会受影响}public static void TestT(People p){Console.WriteLine("传入的参数是"+p.Name);p.Name = "小丑";}}class People{public string Name;}//注意: 值传递(值参数):这个名字和传递的数据类型没有关系,是因为传递进函数内部的是变量里面保存的值,所以才叫做值传递
}

引用传递

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace 引用传递
{internal class Program{static void Main(string[] args){//引用传递(引用传参):当传递一个值类型的时候,方法内部修改形参,会影响到外部,当方法内部需要修改传递进来的变量的时候,就需要使用引用传递int a = 10;Test(ref a);//传递参数的时候必须加上ref关键字Console.WriteLine("a的值是"+a);//定义一个函数,用来交换a和b的值int b = 10;int c = 20;YU(ref b, ref c);Console.WriteLine("b值是"+b);People people = new People() { Name="曹操"};TestT(ref people);Console.WriteLine(people.Name);}//在定义方法的时候,给某个形参前面加上ref关键字,这个参数就进行引用传递(直接传递变量本身)public static void Test(ref int x){Console.WriteLine("传入的参数是"+x);x = 666;}public static void YU(ref int x,ref int y){(x,y)=(y,x);//这是一个语法糖}public static void TestT(ref People p){//修改了p里面保存的内存地址//默认情况下 进行的是值传递 内部修改不会影响外部//加上ref之后  是进行的引用传递, 在方法内部把p保存的内存地址修改之后,会影响到外部p1保存的内存地址p = new People() { Name="张飞"};Console.WriteLine("传入的参数是"+p.Name);}}class People{public string Name;}
}

out输出参数

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace OUT
{internal class Program{static void Main(string[] args){int a = 6;int b = 7;Test(ref a, ref b);Console.WriteLine("a和b的值是"+a+b);int c = 10;int d = 20;TestT(out c, out d);}public static void Test(ref int x,ref int y){Console.WriteLine($"x的值是{x},y的值是{y}");x = 60;y = 70;}public static void TestT(out int x, out int y){x = 60;y = 70;Console.WriteLine($"x的值是{x},y的值是{y}");}}
}
//总结:
//ref和out的区别
//1.out传递参数,可以不用赋值
//2.out传递参数,必须在方法中进行赋值
//3.ref传递参数,可以在方法中获取值,out传递参数,只能在赋值之后取值(out不能传递进去数据)//ref 的主要作用是为了传入数据,因此传入的时候必须赋值
//out 的主要作用是为了传出数据,因此在传入的时候可以不进行初始化,并且在方法中必须赋值

相关文章:

C#方法作用

C#方法 方法的定义与调用 首先我们要知道什么是方法,为什么要去使用方法? 方法就是把一些相关的语句组织在一起,用来执行的语句块 每一个C#程序至少有一个带有Main方法 static void Main(string[] args){ //方法的定义,一般情况下,写在一个类中// 格式: 访问修饰符 返回值…...

【python】python基于机器学习与数据分析的手机特性关联与分类预测(源码+数据集)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;专__注&#x1f448;&#xff1a;专注主流机器人、人工智能等相关领域的开发、测试技术。 python基于机器学习与数据分析的手机特性关联与分类…...

ZOJ 1007 Numerical Summation of a Series

原题目链接 生成该系列值的表格 对于x 的 2001 个值&#xff0c;x 0.000、0.001、0.002、…、2.000。表中的所有条目的绝对误差必须小于 0.5e-12&#xff08;精度为 12 位&#xff09;。此问题基于 Hamming (1962) 的一个问题&#xff0c;当时的大型机按今天的微型计算机标准来…...

DeepSeek-R1:开源机器人智能控制系统的革命性突破

目录 引言 一、DeepSeek-R1 的概述 1.1 什么是 DeepSeek-R1&#xff1f; 1.2 DeepSeek-R1 的定位 二、DeepSeek-R1 的核心特性 2.1 实时控制能力 2.2 多传感器融合 2.3 路径规划与导航 2.4 人工智能集成 2.5 开源与模块化设计 2.6 跨平台支持 三、DeepSeek-R1 的技术…...

全面解析文件上传下载删除漏洞:风险与应对

在数字化转型的时代&#xff0c;文件上传、下载与删除功能已经成为各类应用程序的标准配置&#xff0c;从日常办公使用的协同平台&#xff0c;到云端存储服务&#xff0c;再到社交网络应用&#xff0c;这些功能在给用户带来便捷体验、显著提升工作效率的同时&#xff0c;也隐藏…...

【C语言深入探索】结构体详解(二):使用场景

目录 一、复杂数据的表示 二、数据的封装 三、多态的模拟 四、回调函数的实现 五、多线程编程 六、通信协议的实现和文件操作 6.1. 使用结构体实现简单通信协议 6.2. 使用结构体进行文件操作 七、图形界面编程 结构体在C语言中具有广泛的应用场景&#xff0c;以下是一…...

python日志处理logging

python日志处理logging 在项目开发中&#xff0c;日志信息是程序中必不可少的组成部分。每一种语言都有相应的日志模块&#xff0c;如java中log4j&#xff0c;而python中是通过logging模块来提供日志功能。 日志要哪些本质功能&#xff1f; 在分享日志logging模块之前&#…...

6.进程的使用方式

6.进程的使用方式 **1. 父子进程的关系****2. 进程的终止****3. 僵尸进程和孤儿进程****4. 进程资源回收****5. exec 函数族****6. system 函数****7. 练习与作业****8. 进程的退出状态****9. 进程的清理函数****10. 总结** 1. 父子进程的关系 子进程是父进程的副本&#xff1…...

结构体和类

结构体和类 C结构体中的所有默认成员函数&#xff08;如&#xff1a;构造函数&#xff09;里面可以写一切合法的代码 不单单只可eg:初始化变量{}可以用来划定变量的使用范围 eg: int main() {{int a 0;//则a只能在这个{}里面使用}return 0 ;}<<输出运算符能够直接打印C…...

蓝桥杯真题 - 子串简写 - 题解

题目链接&#xff1a;https://www.lanqiao.cn/problems/3514/learning/ 个人评价&#xff1a;难度 2 星&#xff08;满星&#xff1a;5&#xff09; 前置知识&#xff1a;前缀和 整体思路 定义 s u m i sum_i sumi​ 表示前 i i i 个字符含有字符 c 1 c_1 c1​ 的个数&…...

【大模型】AI 辅助编程操作实战使用详解

目录 一、前言 二、AI 编程介绍 2.1 AI 编程是什么 2.1.1 为什么需要AI辅助编程 2.2 AI 编程主要特点 2.3 AI编程底层核心技术 2.4 AI 编程核心应用场景 三、AI 代码辅助编程解决方案 3.1 AI 大模型平台 3.1.1 AI大模型平台代码生成优缺点 3.2 AI 编码插件 3.3 AI 编…...

RK3566-移植5.10内核Ubuntu22.04

说明 记录了本人使用泰山派&#xff08;RK3566&#xff09;作为平台并且成功移植5.10.160版本kernel和ubuntu22.04&#xff0c;并且成功配置&连接网络的完整过程。 本文章所用ubuntu下载地址&#xff1a;ubuntu-cdimage-ubuntu-base-releases-22.04-release安装包下载_开源…...

从零开始实现一个双向循环链表:C语言实战

文章目录 1链表的再次介绍2为什么选择双向循环链表&#xff1f;3代码实现&#xff1a;从初始化到销毁1. 定义链表节点2. 初始化链表3. 插入和删除节点4. 链表的其他操作5. 打印链表和判断链表是否为空6. 销毁链表 4测试代码5链表种类介绍6链表与顺序表的区别7存储金字塔L0: 寄存…...

PostgreSQL 数据库模式基础操作

查看数据库或者使用pgAdmin或者QGIS查看PG数据库时&#xff0c;可以看到数据库名下面有一个Public&#xff0c;然后才是具体的表&#xff0c;搜索了一下&#xff0c;按照PG官网&#xff1a;https://www.postgresql.org/docs/current/ddl-schemas.html 的说明&#xff0c;这个Pu…...

51单片机 06 定时器

51 单片机的定时器属于单片机的内部资源&#xff0c;其电路的连接和运转均在单片机内部完成。 作用&#xff1a;1、用于计时&#xff1b;2、替代长时间的Delay&#xff0c;提高CPU 运行效率和处理速度。 定时器个数&#xff1a;3个&#xff08;T0、T1、T2&#xff09;&#xf…...

CSS 值和单位详解:从基础到实战

CSS 值和单位详解&#xff1a;从基础到实战 1. 什么是 CSS 的值&#xff1f;示例代码&#xff1a;使用颜色关键字和 RGB 函数 2. 数字、长度和百分比2.1 长度单位绝对长度单位相对长度单位 2.2 百分比 3. 颜色3.1 颜色关键字3.2 十六进制 RGB 值3.3 RGB 和 RGBA 值3.4 HSL 和 H…...

【C++】P1957 口算练习题

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目描述输入格式&#xff1a;输出格式&#xff1a; &#x1f4af;我的做法代码实现&#xff1a; &#x1f4af;老师的做法代码实现&#xff1a; &#x1f4af;对比分析&am…...

Workbench 中的热源仿真

探索使用自定义工具对移动热源进行建模及其在不同行业中的应用。 了解热源动力学 对移动热源进行建模为各种工业过程和应用提供了有价值的见解。激光加热和材料加工使用许多激光束来加热、焊接或切割材料。尽管在某些情况下&#xff0c;热源 &#xff08;q&#xff09; 不是通…...

CCF-GESP 等级考试 2023年12月认证C++八级真题解析

2023年12月真题 一、单选题&#xff08;每题2分&#xff0c;共30分&#xff09; 正确答案&#xff1a;C 考察知识点&#xff1a;数学问题 解析&#xff1a;本题可抽象为分类计数问题&#xff0c;应使用加法原理&#xff0c;而不是乘法原理。答案为 ACB 的方案数 2 加上 ADB 的…...

Vant框架:助力移动端开发的利器

Vant框架&#xff1a;助力移动端开发的利器 在移动互联网飞速发展的今天&#xff0c;开发一款用户体验出色、界面美观且功能强大的移动端应用并非易事。而Vant框架&#xff0c;作为一款专为移动端设计的Vue.js UI组件库&#xff0c;凭借其轻量级、高度可定制化以及丰富的组件库…...

vscode搭建git

vscode搭建git 一、安装git二、vscode上搭建git(1) 先创建本地仓库再上传到远程仓库&#xff0c;远程仓库名是根据本地仓库名一致(2) 先创建远程仓库&#xff0c;再将本地仓库上传到指定远程仓库 一、安装git 网络教程很多&#xff0c;在此就不赘述了 参考&#xff1a;git安装…...

解决Mac安装软件的“已损坏,无法打开。 您应该将它移到废纸篓”问题

mac安装软件时&#xff0c;如果出现这个问题&#xff0c;其实很简单 首先打开终端&#xff0c;输入下面的命令 sudo xattr -r -d com.apple.quarantine 输入完成后&#xff0c;先不要回车&#xff0c;点击访达--应用程序--找到你无法打开的app图标&#xff0c;拖到终端窗口中…...

gltf工具

gltf 在线工具 ONLINE 3D VIEWER 3dviewer.netgltf-viewer cos.3dzhanting.cnviewer www.niushifu.topglTF Viewer gltf-viewer.donmccurdy.comGLTF 在线编辑器 gltf.nsdt.cloudgltfeditor...

ChatGPT-4o和ChatGPT-4o mini的差异点

在人工智能领域&#xff0c;OpenAI再次引领创新潮流&#xff0c;近日正式发布了其最新模型——ChatGPT-4o及其经济实惠的小型版本ChatGPT-4o Mini。这两款模型虽同属于ChatGPT系列&#xff0c;但在性能、应用场景及成本上展现出显著的差异。本文将通过图文并茂的方式&#xff0…...

在K8S中,如何把某个worker节点设置为不可调度?

在Kubernetes中&#xff0c;如果你想要把一个worker节点设置为不可调度&#xff0c;意味着你不想让Kubernetes调度器在这个节点上调度新的Pod。这通常用于维护或升级节点&#xff0c;或者当节点遇到硬件故障或性能问题时&#xff0c;要将某个worker节点设置为不可调度。 方法1…...

解决 LeetCode 922 题:按奇偶排序数组 II

解决 LeetCode 922 题&#xff1a;按奇偶排序数组 II 题目描述 给定一个非负整数数组 nums&#xff0c;其中一半整数是奇数&#xff0c;一半整数是偶数。要求对数组进行排序&#xff0c;以便当 nums[i] 为奇数时&#xff0c;i 也是奇数&#xff1b;当 nums[i] 为偶数时&#…...

读书笔记--分布式架构的异步化和缓存技术原理及应用场景

本篇是在上一篇的基础上&#xff0c;主要对分布式应用架构下的异步化机制和缓存技术进行学习&#xff0c;主要记录和思考如下&#xff0c;供大家学习参考。大家知道原来传统的单一WAR应用中&#xff0c;由于所有数据都在同一个数据库中&#xff0c;因此事务问题一般借助数据库事…...

BUU10 [极客大挑战 2019]LoveSQL1

万能用户名&#xff08;密码随便&#xff09; 登录进去以后发现是这个东西&#xff0c;然而并没有什么卵用 然后就开始爆破数据库名字--表名--列名 注意&#xff1a;这道题需要将所有的表名都爆出来&#xff0c;需要在payload里头写 group_concat()&#xff0c;否则页面只会显…...

tomcat核心组件及原理概述

目录 1. tomcat概述 1.1 概念 1.2 官网地址 2. 基本使用 2.1下载 3. 整体架构 3.1 核心组件 3.2 从web.xml配置和模块对应角度 3.3 如何处理请求 4. 配置JVM参数 5. 附录 1. tomcat概述 1.1 概念 什么是tomcat Tomcat是一个开源、免费、轻量级的Web服务器。 Tomca…...

【实战篇】Android安卓本地离线实现视频检测人脸

实战篇Android安卓本地离线实现视频检测人脸 引言项目概述核心代码类介绍人脸检测流程项目地址总结 引言 在当今数字化时代&#xff0c;人脸识别技术已经广泛应用于各个领域&#xff0c;如安防监控、门禁系统、移动支付等。本文将以第三视角详细讲解如何基于bifan-wei-Face/De…...