首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

请教这么写为什么错了

2012-12-16 
请问这么写为什么错了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)
[其他解释]
刚才查了一下帮助
MSDN:
如何:声明常量

常数必须具有一个有效的符号名称和一个由数值或字符串常数及操作(但不包括函数调用)构成的表达式,其中符号名称的命名规则与变量命名规则相同。

所以常量不能是 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
也会出现  要求常量表达式  错误



引用:
自己定义一个 Public 常量,再用。

[其他解释]
谢谢,明白了,最后决定不用color类型做参数了, 还是用int类型传进来,然后在内部进行转换
[其他解释]
该回复于2012-12-08 09:43:10被管理员删除

热点排行