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 的主要作用是为了传出数据,因此在传入的时候可以不进行初始化,并且在方法中必须赋值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/12174.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C语言篇】“三子棋”

一、游戏介绍 三子棋&#xff0c;英文名为 Tic - Tac - Toe&#xff0c;是一款简单而经典的棋类游戏。游戏在一个 33 的棋盘上进行&#xff0c;两名玩家轮流在棋盘的空位上放置自己的棋子&#xff08;通常用 * 和 # 表示&#xff09;&#xff0c;率先在横、竖或斜方向上连成三个…

vscode软件操作界面UI布局@各个功能区域划分及其名称称呼

文章目录 abstract检查用户界面的主要区域官方文档关于UI的介绍 abstract 检查 Visual Studio Code 用户界面 - Training | Microsoft Learn 本质上&#xff0c;Visual Studio Code 是一个代码编辑器&#xff0c;其用户界面和布局与许多其他代码编辑器相似。 界面左侧是用于访…

【B站保姆级视频教程:Jetson配置YOLOv11环境(六)PyTorchTorchvision安装】

Jetson配置YOLOv11环境&#xff08;6&#xff09;PyTorch&Torchvision安装 文章目录 1. 安装PyTorch1.1安装依赖项1.2 下载torch wheel 安装包1.3 安装 2. 安装torchvisiion2.1 安装依赖2.2 编译安装torchvision2.2.1 Torchvisiion版本选择2.2.2 下载torchvisiion到Downloa…

于动态规划的启幕之章,借 C++ 笔触绘就算法新篇

注意&#xff1a;代码由易到难 P1216 [IOI 1994] 数字三角形 Number Triangles 题目链接&#xff1a;[IOI 1994] 数字三角形 Number Triangles - 洛谷 题目描述 观察下面的数字金字塔。 写一个程序来查找从最高点到底部任意处结束的路径&#xff0c;使路径经过数字的和最大。每…

分页按钮功能

前言 在前端开发中&#xff0c;分页功能是一个常见的需求&#xff0c;特别是当需要展示大量数据时&#xff0c;它能有效提升用户体验。该文章结合运用了HTML&#xff0c;CSS&#xff0c;JS实现网页的分页按钮功能&#xff0c;并且可以选择每页显示的条数试试更新总页数及显示当…

SAP HCM 回溯分析

最近总有人问回溯问题&#xff0c;今天把12年总结的笔记在这共享下&#xff1a; 12年开这个图的时候总是不明白是什么原理&#xff0c;教程看N次&#xff0c;网上资料找一大堆&#xff0c;就是不明白原理&#xff0c;后来为搞明白逻辑&#xff0c;按照教材的数据一样做&#xf…

gitea - fatal: Authentication failed

文章目录 gitea - fatal: Authentication failed概述run_gitea_on_my_pkm.bat 笔记删除windows凭证管理器中对应的url认证凭证启动gitea服务端的命令行正常用 TortoiseGit 提交代码备注END gitea - fatal: Authentication failed 概述 本地的git归档服务端使用gitea. 原来的用…

X Window System 架构概述

X Window System 架构概述 1. X Server 与 X Client ​ 这里引入一张维基百科的图&#xff0c;在Linux系统中&#xff0c;若用户需要图形化界面&#xff0c;则可以使用X Window System&#xff0c;其使用**Client-Server**架构&#xff0c;并通过网络传输相关信息。 ​ ​ X…

Linux防火墙基础

一、Linux防火墙的状态机制 1.iptables是可以配置有状态的防火墙&#xff0c;其有状态的特点是能够指定并记住发送或者接收信息包所建立的连接状态&#xff0c;其一共有四种状态&#xff0c;分别为established invalid new related。 established:该信息包已建立连接&#x…

[论文学习]Adaptively Perturbed Mirror Descent for Learning in Games

[论文学习]Adaptively Perturbed Mirror Descent for Learning in Games 前言概述前置知识和问题约定单调博弈&#xff08;monotone game&#xff09;Nash均衡和Gap函数文章问题定义Mirror Descent 方法评价 前言 文章链接 我们称集合是紧的&#xff0c;则集合满足&#xff1…

Go学习:类型转换需注意的点 以及 类型别名

目录 1. 类型转换 2. 类型别名 1. 类型转换 在从前的学习中&#xff0c;知道布尔bool类型变量只有两种值true或false&#xff0c;C/C、Python、JAVA等编程语言中&#xff0c;如果将布尔类型bool变量转换为整型int变量&#xff0c;通常采用 “0为假&#xff0c;非0为真”的方…

使用Pygame制作“吃豆人”游戏

本篇博客展示如何使用 Python Pygame 编写一个简易版的“吃豆人&#xff08;Pac-Man&#xff09;” 风格游戏。这里我们暂且命名为 Py-Man。玩家需要控制主角在一个网格地图里移动、吃掉散布在各处的豆子&#xff0c;并躲避在地图中巡逻的幽灵。此示例可帮助你理解网格地图、角…

ubuntu磁盘扩容

ubuntu磁盘扩容 描述先在虚拟机设置里面扩容进入Ubuntu 配置使用命令行工具parted进行分区输出如下完成 描述 执行命令,查看 fs 类型是什么 lsblk -o NAME,FSTYPE,MOUNTPOINT将60G扩容到100G&#xff0c;其中有些操作我也不知道什么意思&#xff0c;反正就是成功了&#xff0…

redis底层数据结构

底层数据结构 了解下这些咱常用的数据其底层实现是啥 在提到使用哪类数据结构之前&#xff0c;先来了解下redis底层到底有多少种数据结构 1&#xff0c;sds动态字符串 概念与由来 redis是一种使用C语言编写的nosql&#xff0c;redis存储的key数据均为string结构&#xff0…

ChatGPT怎么回事?

纯属发现&#xff0c;调侃一下~ 这段时间deepseek不是特别火吗&#xff0c;尤其是它的推理功能&#xff0c;突发奇想&#xff0c;想用deepseek回答一些问题&#xff0c;回答一个问题之后就回复服务器繁忙&#xff08;估计还在被攻击吧~_~&#xff09; 然后就转向了GPT&#xf…

趣味Python100例初学者练习01

1. 1 抓交通肇事犯 一辆卡车违反交通规则&#xff0c;撞人后逃跑。现场有三人目击该事件&#xff0c;但都没有记住车号&#xff0c;只记下了车号的一些特征。甲说&#xff1a;牌照的前两位数字是相同的&#xff1b;乙说&#xff1a;牌照的后两位数字是相同的&#xff0c;但与前…

2024-我的学习成长之路

因为热爱&#xff0c;无畏山海

蓝桥杯备考:高精度算法之除法

我们除法的高精度其实也不完全是高精度&#xff0c;而是一个高精度作被除数除以一个低精度 模拟我们的小学除法 由于题目中我们的除数最大是1e9&#xff0c;当它真正是1e9的时候&#xff0c;t是有可能超过1e9的&#xff0c;所以要用long long

Maven jar 包下载失败问题处理

Maven jar 包下载失败问题处理 1.配置好国内的Maven源2.重新下载3. 其他问题 1.配置好国内的Maven源 打开⾃⼰的 Idea 检测 Maven 的配置是否正确&#xff0c;正确的配置如下图所示&#xff1a; 检查项⼀共有两个&#xff1a; 确认右边的两个勾已经选中&#xff0c;如果没有请…

【前端】ES6模块化

文章目录 1. 模块化概述1.1 什么是模块化?1.2 为什么需要模块化? 2. 有哪些模块化规范3. CommonJs3.1 导出数据3.2 导入数据3.3 扩展理解3.4 在浏览器端运行 4.ES6模块化4.1 浏览器运行4.2 在node服务端运行4.3 导出4.3.1 分别导出4.3.2 统一导出4.3.3 默认导出4.3.4 混用 4.…