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

考虑到每个人基础可能不一样,且并不是所有人都有同时做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篇大概率就不需要看了,节约学习时间成本。

文章目录

前言

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

一、命名参数

1、定义:

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

2、语法:

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

3、例子:

csharp 复制代码
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、例子:

csharp 复制代码
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);                           // 使用所有默认值

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

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

例子:

csharp 复制代码
// 组合使用命名参数和可选参数
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,如果学习过程中遇到任何问题,也欢迎你评论私信找我。

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

相关推荐
在下小孙12 分钟前
C#——类型转换
开发语言·c#·变量类型转换
丁总学Java43 分钟前
c.p.api.config.MyAuthenticationProvider
开发语言
青春_strive1 小时前
Qt常用控件之输入类控件
开发语言·qt
SummerStoneS2 小时前
神经网络常见面试题
开发语言·batch
Tiger Z2 小时前
R 语言科研绘图第 20 期 --- 箱线图-配对
开发语言·程序人生·r语言·贴图
??? Meggie3 小时前
【Python】使用 selenium模拟敲键盘输入的方法汇总
开发语言·python·selenium
深度混淆3 小时前
C#,入门教程(03)——Visual Studio 2022编写彩色Hello World与动画效果
开发语言·c#
雷神乐乐3 小时前
Java操作Excel导入导出——POI、Hutool、EasyExcel
java·开发语言·spring boot·poi·easyexcel·hutool
我是苹果,不是香蕉3 小时前
vim将一行行尾倒数第三个字符替换成1
linux·编辑器·vim