请问这么写为什么错了Public Sub test(Optional c As Color Color.LightSeaGreen)code hereEnd SubColo
请问这么写为什么错了
Public Sub test(Optional c As Color = Color.LightSeaGreen)
'code here
End Sub
Color.LightSeaGreen被下加上波浪线 错误提示为 要求常量表达式
难道Color.LightSeaGreen不是一个常量吗?
[最优解释]你把Color.LightSeaGreen转换成16进制即可
[其他解释]你这有二个问题:
1.color是一个结构,是structure,不是enum或者其它的。结构是不能用于optional的;
2.color.yellow等不是一个常量,而是只读数据,是public readonly property yellow()...函数
你可以通过十六进制来传递所需要的颜色。
color.fromargb(INTEGER)
[其他解释]刚才查了一下帮助
所以常量不能是 Color 结构,可选参数也一样不能。
只能用重载
Public Sub test()
test(Color.LightSeaGreen)
End Sub
Public Sub test(c As Color)
...
End Sub
[其他解释]这是个属性。
虽然人人都知道这个属性的值不变,但是编译器不这么认为。
[其他解释]要求是常量嘛 ,1,2,3,4,5,a,b,c.......
[其他解释]那我要如何给一个可选变量附一个默认值呢?
[其他解释]自己定义一个 Public 常量,再用。
[其他解释]即使使用 Public Const C1 As Color = Color.Azure
也会出现 要求常量表达式 错误
[其他解释]谢谢,明白了,最后决定不用color类型做参数了, 还是用int类型传进来,然后在内部进行转换
[其他解释]该回复于2012-12-08 09:43:10被管理员删除