C# 语言类型(四)—传递参数及其修饰符

总目录
C# 语法总目录

参考链接:
C#语法系列:C# 语言类型(一)—预定义类型值之数值类型
C#语法系列:C# 语言类型(二)—预定义类型之字符串及字符类型简述
C#语法系列:C# 语言类型(三)—数组/枚举类型/结构体
C#语法系列:C# 语言类型(四)—传递参数及其修饰符
C#语法系列:C# 语言类型(五)—其他

C# 语言类型 四—传递参数及其修饰符

      • 传递参数及其修饰符
        • 1. 按值传递参数
        • 2. ref 修饰符
          • ref引用局部变量
          • ref 引用返回值
        • 3. out 修饰符
        • 4. params 修饰符
        • 5. 可选参数
        • 6. 命名参数
        • 7.隐式类型变量var

传递参数及其修饰符

1. 按值传递参数

C#方法中的参数默认是按照值传递

2. ref 修饰符

ref 修饰符 用于将 数值类型参数 进行引用传递

namespace _036_ref 修饰符 {
    class Program {
        static void Func(ref int a,ref int b)
        {
            int temp = a;
            a = b;
            b = temp;
        }

        static void Main(string[] args)
        {
            int a = 10;
            int b = 20;

            Func(ref a, ref b);

            Console.WriteLine(a.ToString());	//20
            Console.WriteLine(b.ToString());	//10

        }
    }
}


namespace _036_ref 修饰符 {
    class Program {
        static void Func(ref string a,ref string b)
        {
            string temp = a;
            a = b;
            b = temp;
        }

        static void Main(string[] args)
        {
            string a = "hello";
            string b = "nihao";

            Func(ref a,ref b);

            Console.WriteLine(a.ToString());	//nihao
            Console.WriteLine(b.ToString());	//hello

        }
    }
}
ref引用局部变量

需要C#7

int[] a = { 1, 2, 3 };
ref int b = ref a[1];
Console.WriteLine(a[1]);
b = 5;
Console.WriteLine(a[1]);
//输出
2
5
ref 引用返回值

需要C#7

static string a = "abc";
static ref string Method()
{
    return ref a;
}
static void Main(string[] args)
{
    ref string c = ref Method();
    Console.WriteLine(a);
    c = "hhh";
    Console.WriteLine(a);
}
//输出
abc
hhh
3. out 修饰符

  out 修饰符是传出参数,用于将方法内的数值用参数的形式传出,此外,带 out 修饰的参数,在方法结束前必须对它进行赋值。

namespace _036_out 修饰符 {
    class Program {
        static void Func(string a,out string b,out int c)
        {
            b = a;
            c = 1;
        }

        static void Main(string[] args)
        {
            string a = "hello";
            string b = "nihao";
			
            //如果不想要传出参数,那么就用下划线  _  代替
            Func(a,out b,out _);

            Console.WriteLine(a.ToString());	//hello
            Console.WriteLine(b.ToString());	//hello

        }
    }
}

  如果不想要其他的out参数,那么在调用方法的时候 用下划线 _ 代替,这叫做丢弃变量

//声明 
static void Func(string a,out string b,out int c)

 //调用    
Func(a,out b,out _);
4. params 修饰符

params 修饰的参数必须是一维数组,这个参数必须是最后一个参数

namespace _036_params 修饰符 {
    class Program {
        static void Func(string a,params int[] c)
        {
            int sum = 0;
            foreach(var i in c)
            {
                sum += i;
            }
            Console.WriteLine(sum.ToString());
        }

        static void Main(string[] args)
        {
            Func("",1,2,3);			//6
        }
    }
}
5. 可选参数

可选参数就是给方法中 的形参添加一个默认值

 void Func(string a = "fast",int[] c)
6. 命名参数

  命名参数就是不管函数声明中参数的顺序,在调用过程中指定给哪个形参赋值。

此外命名参数还可以和值传递的混合使用,但是命名参数必须放在末尾。

还有可选参数和命名参数可以混合使用。

namespace _036_命名参数 {
    class Program {
        static void Func(int a,int b)
        {
            Console.WriteLine(a);
            Console.WriteLine(b);
        }

        static void Main(string[] args)
        {
            int c = 1;
            int d = 2;

            Func(b:d, a:c);

        }
    }
}
7.隐式类型变量var
var a = "abc";
//等同于
string a = "abc";
//没有任何区别

总目录
C# 语法总目录

参考链接:
C#语法系列:C# 语言类型(一)—预定义类型值之数值类型
C#语法系列:C# 语言类型(二)—预定义类型之字符串及字符类型简述
C#语法系列:C# 语言类型(三)—数组/枚举类型/结构体
C#语法系列:C# 语言类型(四)—传递参数及其修饰符
C#语法系列:C# 语言类型(五)—其他

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Springboot+Vue项目-基于Java+MySQL的网上超市系统(附源码+演示视频+LW)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:Java毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计 &…

Jackson 2.x 系列【28】Spring Boot 集成之 Long 精度损失

有道无术,术尚可求,有术无道,止于术。 本系列Jackson 版本 2.17.0 本系列Spring Boot 版本 3.2.4 源码地址:https://gitee.com/pearl-organization/study-jaskson-demo 文章目录 1. 问题场景2. 原因分析3. 解决方案4. 案例演示4.…

Python 物联网入门指南(七)

原文:zh.annas-archive.org/md5/4fe4273add75ed738e70f3d05e428b06 译者:飞龙 协议:CC BY-NC-SA 4.0 第二十四章:基本开关 到目前为止一定是一段史诗般的旅程!回想一下你开始阅读这本书的时候,你是否曾想象…

v-for中涉及的key

一、为什么要用key? key可以标识列表中每个元素的唯一性,方便Vue高效地更新虚拟DOM;key主要用于dom diff算法,diff算法是同级比较,比较当前标签上的key和标签名,如果都一样,就只移动元素&#…

(十二)C++自制植物大战僵尸游戏多用户存档实现(一)

植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/8UFMs 游戏存档 游戏存档允许玩家保存游戏进度,以便在之后的时间继续游戏。通过存档,玩家可以暂停游戏并在需要时重新开始,而不必从头开始或重新完成已经完成的任务。游戏通常提供多个…

VAR:自回归家族文生图新SOTA,ImageNet上超越Diffusion与DiTs

一、背景: 在人工智能领域,尤其是计算机视觉和自然语言处理中,自回归(AR)大型模型(如GPT系列)因其强大的生成能力和在多种任务上的通用性而受到广泛关注。这些模型通过自监督学习策略&#xff0…

PMP有用吗,PMP含金量,如何转型项目经理?

为什么要学习PMP知识,PMP培训哪家好? IT行业项目管理一枚,曾在做技术的时候对自己的职业发展越来越迷茫,不想干到35岁就参与到失业潮中,一直在想着办法提升自己的能力和竞争力,直到了解到了PMP认证。也就是…

二维码门楼牌管理应用平台建设:场所维护的新篇章

文章目录 前言一、二维码门楼牌管理应用平台的兴起二、民警与网格员的角色定位三、场所信息审核的重要性四、技术支持与创新应用五、未来展望与挑战 前言 随着信息技术的飞速发展,二维码门楼牌管理应用平台的建设正成为城市管理的新宠。该平台不仅提高了场所管理的…

HR招聘人才测评,如何考察候选人的内驱力?

HR的日常招聘工作中,如何去评估候选人的内驱力。人的内驱力,在职业生涯中,是极为重要的品质,也被列入综合素质测评。 内驱力,是指一个人出于内心深处的热情和追求,自发驱动自己持续学习、不断进步&#xf…

jenkins从节点配置说明

目的 打包构建时使用从节点,从节点所在服务器配置4C8G5000G(服务器2) 前提 首先在服务器1上部署jenkins服务,即主节点,默认节点名称为master 步骤 1)登录进入jenkins平台,在系统设置中&…

项目风采展示【车酷-保时捷第二屏】

桌面功能介绍: 1:支持本地app桌面展示 2:支持本地音乐控制

LeetCode 每日一题 Day 123-136

1379. 找出克隆二叉树中的相同节点 给你两棵二叉树,原始树 original 和克隆树 cloned,以及一个位于原始树 original 中的目标节点 target。 其中,克隆树 cloned 是原始树 original 的一个 副本 。 请找出在树 cloned 中,与 tar…

自学Java的第二十四次笔记

一,方法重载 1.基本介绍 java 中允许同一个类中,多个同名方法的存在,但要求 形参列表不一致! 比如: System.out.println(); out 是 PrintStream 类型 2.重载的好处 1) 减轻了起名的麻烦 2) 减轻了记名的麻烦 3.快速入门案…

git 小记

一、 github新建仓库 git clone 。。。。。。。。。。。 (增删查补,修改) git add . git commit -m "修改” git push (git push main) 二、branch 分支 branch并不难理解,你只要想像将代码拷贝到不同目录…

Modality-Aware Contrastive Instance Learning with Self-Distillation ... 论文阅读

Modality-Aware Contrastive Instance Learning with Self-Distillation for Weakly-Supervised Audio-Visual Violence Detection 论文阅读 ABSTRACT1 INTRODUCTION2 RELATEDWORKS2.1 Weakly-Supervised Violence Detection2.2 Contrastive Learning2.3 Cross-Modality Knowle…

盲人安全导航技巧:科技赋能让出行更自如

作为一名资深记者,长期关注并报道无障碍领域的发展动态。今日,我将聚焦盲人安全导航技巧,探讨这一主题下科技如何赋能视障人士实现更为安全、独立的出行。一款融合了实时避障、拍照识别物体及场景功能的盲人出行辅助应用叫做蝙蝠避障&#xf…

软考 - 系统架构设计师 - Web 应用真题(2)

问题 1: 淘汰策略:遗留系统技术含量低,业务价值也低,所以需要全面重新开发一个系统来替代遗留系;(一般是企业的业务发生了根本变化,遗留系统已经基本不再适应企业运作的需要;或者是遗…

C语言进阶课程学习记录-数组指针和指针数组分析

C语言进阶课程学习记录-数组指针和指针数组分析 实验-数组指针的大小实验-指针数组小结 本文学习自狄泰软件学院 唐佐林老师的 C语言进阶课程&#xff0c;图片全部来源于课程PPT&#xff0c;仅用于个人学习记录 实验-数组指针的大小 #include <stdio.h>typedef int(AINT…

【微信小程序之分包】

微信小程序之分包 什么是分包分包的好处分包前的结构图分包后的结构图分包的加载规则分包的体积限制使用分包打包原则引用原则独立分包独立分包的配置方法独立分包的引用原则分包预下载配置分包的预下载分包预下载限制 什么是分包 分包指的是把一个完整小程序项目&#xff0c;…

理想低通滤波器

理想低通滤波器&#xff0c;振铃现象是因为sinc函数&#xff0c;而sinc函数是因为例4.1的简单函数的傅里叶变换得到的。经过我的计算&#xff0c;简单函数的傅里叶反变换也得到sinc函数。这里的频率域滤波器因为是二个值的&#xff0c;所以类似简单函数&#xff0c;反变换之后得…