【从零开始入门unity游戏开发之——C#篇46】C#补充知识点——命名参数和可选参数

devtools/2025/1/21 0:12:00/

考虑到每个人基础可能不一样,且并不是所有人都有同时做2D、3D开发的需求,所以我把 【零基础入门unity游戏开发】 分为成了C#篇、unity通用篇、unity3D篇、unity2D篇

  • 【C#篇】:主要讲解C#的基础语法,包括变量、数据类型、运算符、流程控制、面向对象等,适合没有编程基础的同学入门。
  • unity通用篇】:主要讲解unity的基础通用的知识,包括unity界面、unity脚本、unity资源管理、unity动画、unity摄像机等,适合unity初学者入门。
  • unity3D篇】:主要讲解unity3D的知识,unity3D角色、unity3D物理系统、unity3D光照等,适合只想做2D游戏的开发者学习。
  • unity2D篇】unity2D篇:主要讲解unity2D的知识,包括unity2D角色、unity2D物理系统、unity2D光照等,适合只想做3D游戏的开发者学习。

这样方便大家按需选择性的去学习,比如有编程基础的大概率可以直接从unity通用篇开始入门,没有编程基础的建议从C#篇开始学习。只想做2D游戏的话,可以直接从unity2D篇开始学习,3D篇大概率就不需要看了,节约学习时间成本。

文章目录

  • 前言
  • 一、命名参数
    • 1、定义:
    • 2、语法:
    • 3、例子:
  • 二、可选参数
    • 1、定义:
    • 2、注意事项:
    • 3、语法:
    • 4、例子:
  • 三、组合使用命名参数与可选参数
  • 四、补充说明
  • 专栏推荐
  • 完结

前言

命名参数和可选参数是C#中用于简化方法调用的特性,它们使得开发者可以在调用方法时不必严格遵循参数定义的顺序,并且可以选择性地省略那些具有默认值的参数。以下是关于这两个特性的详细说明、示例以及一些补充信息。

一、命名参数

1、定义:

命名参数允许你在调用方法时通过参数的名字来指定参数值,而不是依赖于它们在方法签名中的位置。这使得代码更易读,尤其是在参数数量较多或参数类型相似的情况下。

2、语法:

使用参数名后跟冒号(:),然后是你要传递的值。

3、例子:

public void Test(int i, float f, bool b)
{Console.WriteLine($"i = {i}, f = {f}, b = {b}");
}// 使用命名参数调用
Test(i: 1, f: 1.2f, b: true);       // 按照原顺序
Test(f: 3.3f, i: 5, b: false);      // 改变顺序
Test(b: false, f: 3.4f, i: 3);      // 完全不同的顺序

二、可选参数

1、定义:

可选参数是指在方法声明时为某些参数提供默认值。如果调用者没有为这些参数提供具体的值,那么就会使用默认值。这样可以减少不必要的重载方法。

2、注意事项:

  • 可选参数必须位于方法签名的所有非可选参数之后。
  • 默认值只能是编译时常量或者null(对于引用类型)。

3、语法:

在参数列表中直接给参数赋默认值。

4、例子:

public void Test2(int i, bool b = true, string s = "123")
{Console.WriteLine($"i = {i}, b = {b}, s = {s}");
}// 调用时可以省略可选参数
Test2(1, true, "234");              // 所有参数都提供
Test2(1, s: "234");                 // 省略中间的可选参数
Test2(1);                           // 使用所有默认值

三、组合使用命名参数与可选参数

你可以同时使用命名参数和可选参数,以获得更大的灵活性。例如,当有多个可选参数时,你不需要为前面的可选参数提供值,而是可以直接跳过并为后面的可选参数指定值。

例子:

// 组合使用命名参数和可选参数
Test2(1, s: "456");                // 跳过bool类型的可选参数,直接指定string类型的值

四、补充说明

  • 性能影响:尽管使用命名参数可以使代码更加清晰易懂,但需要注意的是,过多地使用命名参数可能会对性能产生轻微的影响,因为编译器需要额外处理这些参数名称。不过,在大多数情况下,这种影响是可以忽略不计的。

  • API设计:当你设计一个公共库或框架时,合理使用可选参数可以帮助简化API的使用,但也要考虑到过度依赖可选参数可能会使API变得复杂。因此,应该权衡利弊,确保API既灵活又易于理解。

  • 版本兼容性:如果你正在维护一个已经被广泛使用的库,添加新的可选参数时要小心,以避免破坏现有代码。通常建议在新版本中引入全新的方法重载,而不是修改现有的方法签名。


专栏推荐

地址
【零基础入门unity游戏开发——C#篇】
【零基础入门unity游戏开发——unity通用篇】
【零基础入门unity游戏开发——unity3D篇】
【零基础入门unity游戏开发——unity2D篇】
【制作100个Unity游戏】
【推荐100个unity插件】
【实现100个unity特效】
unity框架/工具集开发】

完结

好了,我是向宇,博客地址:https://xiangyu.blog.csdn.net,如果学习过程中遇到任何问题,也欢迎你评论私信找我。

赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!
在这里插入图片描述


http://www.ppmy.cn/devtools/152221.html

相关文章

Trie(算法版)

#include <iostream>using namespace std;const int N100010; int son[N][26],cnt[N],idx; //son记录trie数&#xff0c;cnt记录每个词出现的次数&#xff0c;idx记录每个字符所占⽤的下标//加入字符串 void add(char str[]){//idx 0既表⽰根节点也表⽰空节点int p 0;fo…

Windows11电脑总是一闪一闪的,黑一下亮一些怎么解决

Windows11电脑总是一闪一闪的&#xff0c;黑一下亮一些怎么解决 1. 打开设备管理器2. 点击显示适配器3. 更新下方两个选项的驱动3.1 更新驱动Inter(R) UHD Graphixs3.2 更新驱动NVIDIA GeForce RTX 4060 Laptop GPU 4. 其他文章快来试试吧&#x1f970; 1. 打开设备管理器 在电…

数据库3(MySQL版)

1.任务要求 (1).分别查询student表和score表的所有记录 (2).查询student表的第2条到5条记录 (3).从student表中查询计算机系和英语系的学生的信息 (4).从student表中查询年龄小于22岁的学生信息 (5).从student表中查询每个院系有多少人 (6).从score表中查询每个科目的最高分 (7…

废品回收小程序,数字化回收时代

随着科技的不断创新发展&#xff0c;废品回收在各种技术的支持下也在不断地创新&#xff0c;提高了市场的发展速度&#xff0c;不仅能够让回收效率更加高效&#xff0c;还能够让居民更加便捷地进行回收&#xff0c;推动废品回收行业的发展。 回收市场机遇 目前&#xff0c;废…

三天急速通关Java基础知识:Day1 基本语法

三天急速通关JAVA基础知识&#xff1a;Day1 基本语法 0 文章说明1 关键字 Keywords2 注释 Comments2.1 单行注释2.2 多行注释2.3 文档注释 3 数据类型 Data Types3.1 基本数据类型3.2 引用数据类型 4 变量与常量 Variables and Constant5 运算符 Operators6 字符串 String7 输入…

WPF实现动态四宫格布局

需求描述 我们要设计一个界面&#xff0c;用户可以通过 CheckBox 控制哪些图表显示。图表的数量是动态的&#xff0c;最多可以选择显示四个图表。如果显示一个图表&#xff0c;它会占满整个区域&#xff1b;如果显示两个图表&#xff0c;它们会水平排列&#xff1b;显示三个图…

【前端】CSS学习笔记(1)

目录 CSS的简介CSS的概念语法 CSS的引入方式内联样式&#xff08;行内样式&#xff09;内部样式外部样式&#xff08;推荐&#xff09; 选择器全局选择器元素选择器类选择器ID选择器合并选择器后代选择器子选择器相邻兄弟选择器通用兄弟选择器伪类选择器:link:visited:hover:ac…

【客观对比】激光雷达 vs 纯视觉方案:汽车自动驾驶的两种路径

激光雷达 vs 纯视觉方案&#xff1a;汽车自动驾驶的两种路径 导语 汽车自动驾驶技术正以惊人的速度发展&#xff0c;未来无疑会彻底改变我们的出行方式。在这场技术竞争中&#xff0c;激光雷达&#xff08;LiDAR&#xff09;和纯视觉&#xff08;Camera-based&#xff09;方案…