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

c#笔记之方法的形参列表以及方法重载


学习内容:

方法的形参各种形式,形参就是方法括号里的如public void Funt(int x)里的x;

一、传值参数

本质就是创建一个副本来操作副本

1.1值类型

给方法传值的参数如下面例子里的x;在方法内部对传进来的参数进行操作不会影响,操作完之后y依旧是40,因为在方法里操作的是传进来变量的副本

public void TestFunt(int x)
{
x+=1;
}int y=4;
TestFunt(y);

1.2引用类型(不推荐使用这种情况)

引用类型因为引用类型里存的不是直接的值而是地址所以传入方法之后方法里的地址指向的还是同一个对象,所以这时候修改会改变传入的对象里的值;下面的例子在执行方法test2之后stu1的name是11;因为输入的是副本所以是两个地址;但是地址里的值都是同一个实例在堆上的地址所以操作会改变实例stu1的name属性;

class Student
{
public string name{get;set;}
}public void TestFunt(Student stu){
stu.name=“11”;
}public void test2()
{
Student stu1 = new Student();
stu1.name="22";
TestFunt(stu1);}

二、引用参数(ref)

引用参数和上面的传值参数的区别就是不创建副本;

因为不创建副本所以在方法里修改会直接改变方法外的值,如下面例子里的x,在方法test后变成3;声明方法时和使用方法时都要加上ref关键字

public void Funt()
{
int x=2;
test(ref x);
}public void test(ref int y)
{
y+=1;
}

三、输出参数(out)

和引用参数一样都是不创建副本;

如下面例子里的x,在方法test后变成3;声明方法时和使用方法时都要加上out关键字;

public void Funt()
{
int x=2;
test(out x);
}public void test(out int y)
{
y=3;
}

四、out和ref的区别

4.1使用场景不同

ref一般用于修改某个值的时候会用;out则是要输出某个值的时候;

因为ref是修改是在值上修改所以在方法外要明确值不然修改什么;在方法结束的时候也可以不修改赋值;out是输出原本的值无所谓,所以在方法外可以不用明确值但是结束的时候一定要赋值;

public void RefFunt(ref int x)
{//可以不对x操作
}public void OutFunt(out int y)
{int y=4;//明确修改
}public void Test()
{
int iTest = 4;//明确值
RefFunt(ref iTest);int iTest1;//可以不用明确值
OutFunt(out iTest1);}

五、数组参数(params)

有一个方法要一个int数组参数
public void Funt(int[] x)
{}public void test()
{int[] yy = new int[3] { 1,2,3};
Funt(yy);
}

可以使用params

public void Funt(params int[] x)
{}public void test()
{
//可以使用旧形式int[] yy = new int[3] { 1,2,3};
Funt(yy);//还可以用新方法
Funt(1,2,3);
}

形参列表不止一个的时候,数组参数必须要在形参列表的最后一个并且只能有一个,下面的4就是形参c,后面多出来的1,2,3系统默认属于数组int[]x。

public void Funt(string te,int c,params int[] x)
{}public void test()
{
Funt(“yy”,4,1,2,3);
}

六、具名参数

具名参数其实不是一种形参参数而是一种使用方法;可以不用在意参数具体位置,

public void Funt(string te,int c)
{}public void test()
{
Funt(c:5,te:“yy”);//可以吧形参te和c的位置反过来因为前面有参数的名字
}

七、方法重载(this)

方法重载是对类添加一个方法适用与类的代码不在自己手里但是要添加一个方法的情况;

exp:比如有一个Student类要添加一个方法

  1. 先创建一个静态类(约定俗成Extensions结尾)
  public class Student{public string strName;
}public static class TestExtensions{public static void testexFunt(this Student stu, int a){Console.WriteLine(stu.strName);Console.WriteLine(a.ToString());}}

2.创建一个静态方法第一个形参要添加this,this后面加要添加这个方法的类如例子里是Studen这个类;注意this形参只能是第一个并且不能用ref或者out;其他的就和正常方法的形参一样,

学习时间:

25.07.17


http://www.dtcms.com/a/285190.html

相关文章:

  • 智能外呼系统应用场景
  • Windows 11清理C盘方法大全:磁盘清理/禁用休眠/系统还原点/优化大师使用教程
  • PostgreSQL 中的 pg_trgm 扩展详解
  • docker 安装nacos
  • Content-Type 请求头
  • 求解偏微分方程的傅里叶积分解
  • 【C语言进阶】内存函数
  • app打包ios上架appStore流程
  • 强化第三讲—一元函数微分学的概念
  • vue + Cesium 实现 3D 地图水面效果详解
  • Leetcode刷题营第二十七题:二叉树的最大深度
  • 研二Last Day
  • 【保姆级喂饭教程】idea开发TODO规范
  • 【项目实践08】【事务加锁的问题】
  • 【C++类和对象解密】面向对象编程的核心概念(下)
  • openinstall上线SSL证书服务,开启数字安全新纪元
  • 从现场出发:能源系统中的智能设备与实际落地工具解读
  • 7 基本的空间关系判断
  • Git仓库核心概念与工作流程详解:从入门到精通
  • 「Java案例」递归实现整数的倒置
  • MyBatis-Flex 学习与整理
  • LeNet-5 详解:从理论到实践
  • HTML前端性能优化完整指南
  • LeetCode 234:回文链表
  • 文件类型说明
  • H7-TOOL脱机下载后,自动重连RTT,CAN和串口助手三合一模式方法,方便项目测试(2025-07-16)
  • Spring Boot 分层架构详解:Controller、Service、Mapper...
  • C++网络编程 5.TCP套接字(socket)通信进阶-基于多线程的TCP多客户端通信
  • 鸿蒙状态栏操作
  • 能碳管理平台:企业碳减排解决方案绿色工厂达标工具