中易网

C# 函数参数默认值问题

答案:2  悬赏:0  
解决时间 2021-04-28 11:22
  • 提问者网友:醉人眸
  • 2021-04-27 20:37
代码如下:
private void Print(string message, Color color = Color.White) {}
报错: “color”的默认参数值必须为编译时常量
最佳答案
  • 二级知识专家网友:迷人小乖乖
  • 2021-04-27 22:14
C# 有2种不同的常量定义方式:编译时常量(compile-time) 和运行时常量(runtime)。所谓编译时常量,是以 const 关键字定义,所谓编译时是常量则以 readonly 关键字定义。
 
C# 规定参数的默认值必须是编译时能确定的常量值。
 
这些参数的类型可以是 C# 认定的基元类型。还可以包括枚举类型,以及能设为 null 的任何引用类型。
 
Color 这个枚举类属于运行时常量。
 
如果硬要写一个带默认值的函数,只能利用重写的方法,例如:
private void Print(string message) 

    Color color = Color.White; 


private void Print(string message, Color color) 


【附】C# 基元类型:
sbyte / byte / short / ushort /int / uint / long / ulong / char / float / double / bool / decimal /object / string
全部回答
  • 1楼网友:浪者不回头
  • 2021-04-27 22:41
楼主你好~ 首先说明,缺省参数是.net4.0以后才被c#支持的语法,还是建议使用重载来实现这个功能。 对于缺省参数是有两个限制的: 1. 缺省参数一定要放在普通参数之后,params参数之前。 2. 缺省参数的默认值一定要是一个常量。 所以您的users实体例子违反了第二个限制。 请追问~
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息