C#-函数的传值与传址
转 https://www.cnblogs.com/qq450867541/p/5977689.html
传值就是将实参的值传到所调用的函数里面,实参的值并没有发生变化,默认传值的有int型,浮点型,bool型,char字符型,结构体等等。
传址就是将地址传到所调用的函数里面操作,实参的值也会跟着变化,传址的有数组和字符串string。
上面说的就牵扯到数据的分类,分为值类型和引用类型,值类型的就是传值的那种,引用类型包括字符串类型,数组和对象,字符串类型特殊,主要是因为字符串实际上是一个字符char[]数组,它在修改的时候并不是直接修改,而是新开辟了一个存储空间也就是建立了一个新的字符串,所以它在调用、赋值的using System;
using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Collections; namespace _1019传值传址 { class Program { //一、传值-将变量的值传入函数中 public void Qiuhe(int a) { int b = a + 10; Console.WriteLine(b); }
////写个函数,传值进去,传姓名、性别、年龄进去
//将年龄+10岁, //return反馈回来 split分割 public string Fanhui(string name, string sex, int age) { age += 10; return name + "-" + sex + "-" + age; } //三、out传址-仅仅将变量名带入函数,不考虑参数值,out自动默认return public void Fanhui1(int a,out int b) { b = a + 10; } static void Main(string[] args) { //调用函数之前需要先初始化、实例化该Class类 Program Hanshu = new Program(); //一、传值-将变量的值传入函数中 int a = 5; int b = 10; Hanshu.Qiuhe(a); Console.WriteLine(b);
//最后输出b结果为10,为什么不是5+10=15? //因为外部定义的int b 与内部定义的int b 不是同一个b ,仅仅是用了同一个字母来表示而已

//二、一个函数只能返回一个值,将函数返回的值用split进行分割后放入一维数据获取多个值 string ss = Hanshu.Fanhui("张三", "男", 33); string[] xx = ss.Split('-'); for (int i = 0; i < 3; i++) { Console.WriteLine(xx[i]); }
//三、out传址 int aa = 5; int bb = 10; Hanshu.Fanhui1(aa, out bb); Console.WriteLine(bb); //传址:将这个变量名直接传输过去,若在另一边有赋值情况,这个变量名将变化
Console.ReadLine();
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)