C#:可选参数
C# 可选参数允许在方法定义时为参数指定默认值,调用时可省略这些参数而使用默认值。以下是关键特性和使用规范:
1、基本语法与约束
语法规则:可选参数必须在方法声明的参数列表末尾,且默认值必须为常量(数字、字符串、null、const成员或枚举值)。例如:
void PrintData(string name, int age = 18, bool isActive = true) {}
其中 age 和 isActive 为可选参数。
必选参数优先:所有必选参数必须位于可选参数之前。若方法同时包含必选和可选参数,调用时必须传递必选参数,可选参数可省略。
禁止场景:
参数数组(params)不能作为可选参数。
使用 ref 或 out 修饰的参数不能设为可选。
2、与命名参数结合
可选参数常与命名参数配合使用,以跳过中间参数或仅覆盖特定默认值。例如:
void Configure(string server, int port = 8080, bool ssl = false) {}
// 仅修改ssl参数,保留port默认值
Configure("example.com", ssl: true);
此方式避免了为中间参数提供占位值。
3、应用场景
简化重载方法:通过单个方法替代多个重载版本,减少代码冗余。例如,文件操作API可通过可选参数支持多种配置组合。
COM互操作:如Office自动化API中,处理包含大量可选参数的方法(如Word的ConvertToTable方法),避免传递冗余占位值。
4、注意事项
默认值不可变:编译时会固化默认值,修改默认值需重新编译调用方代码。
动态类型限制:在Unity等环境中,若使用.NET 4.x以下版本或IL2CPP编译,动态类型(dynamic)可能无法与可选参数协同工作。