请解释 C# 中默认参数值的含义及其在方法定义和调用中的使用方式,同时说明使用默认参数时需要注意的规则和限制。
考察说明
考察对 C# 默认参数概念、应用及潜在误区的掌握程度。
回答思路
- 【回答框架 1】C# 默认参数值是在方法声明时为可选参数指定的常量值,调用时若省略该参数则使用默认值。定义语法为在参数类型后使用等号赋值,例如 void Foo(int x = 10)。
- 【回答框架 2】使用默认参数时,可选参数必须位于所有必选参数之后,且默认值必须是编译期常量,例如数字、字符串、枚举成员或 null。调用时可按位置省略可选参数,或使用命名参数跳过前序可选参数。
- 【回答框架 3】默认参数与重载方法不同,重载是定义多个方法签名,而默认参数只定义一个方法,但在编译时编译器会将调用展开为传递默认值,因此可能影响二进制兼容性,修改默认值需重新编译调用方。
- 【关键点 1】默认参数值必须是编译期常量。
- 【关键点 2】可选参数必须放在必选参数之后。
- 【关键点 3】调用时可用命名参数跳过前序参数。
- 【关键点 4】修改默认值可能影响二进制兼容性。
- 【易错点 1】误将运行时值赋给默认参数,导致编译错误。
- 【易错点 2】将可选参数放在必选参数之前,导致语法错误。
- 【易错点 3】在公开 API 中随意修改默认值,可能造成旧调用方行为不一致。