C#面试题更新 2026-08-03

在 C# 中,定义方法时如何设置默认参数值,调用时又如何使用命名参数?请说明语法和相关的限制条件。

考察说明

考查对 C# 默认参数和命名参数语法及其使用限制的掌握。

回答思路

  1. 【回答框架 1】默认参数值在方法定义时通过给参数赋常量值来设置,如 void M(int x = 10)。调用时可省略该参数,编译器会使用默认值。默认值必须是编译期常量,如数字、字符串、null 或 const 字段,不能使用非静态成员。
  2. 【回答框架 2】命名参数在调用时通过参数名指定值,如 M(x: 5)。命名参数可以按任意顺序排列,但位置参数必须在命名参数之前(C# 7.2 之前,之后可以混用但需保持正确顺序)。命名参数常与可选参数结合使用,提高可读性。
  3. 【回答框架 3】注意事项:默认参数值在编译时被嵌入调用点,修改默认值后需重新编译调用方才能生效。可选参数后不能跟必选参数,即默认参数必须放在参数列表最后。
  4. 【回答框架 4】命名参数不能用于调用索引器(C# 中不支持),且不能用于属性设置。在重载方法中,使用命名参数可能引起歧义,需注意。
  5. 【关键点 1】默认参数值必须是编译期常量,且必须放在参数列表末尾。
  6. 【关键点 2】命名参数允许按参数名传值,可改变顺序,但位置参数在前。
  7. 【关键点 3】默认值在编译时嵌入调用点,修改后需重新编译。
  8. 【易错点 1】不要认为默认参数值可以在调用时动态计算——它必须是常量。
  9. 【易错点 2】避免在重载中混用命名参数导致歧义。
  10. 【易错点 3】注意默认参数与可选参数的关系:可选参数必须有默认值。