请问这么写为什么错了

ttsffgg 2012-12-05 11:16:53
    
Public Sub test(Optional c As Color = Color.LightSeaGreen)
'code here
End Sub


Color.LightSeaGreen被下加上波浪线 错误提示为 要求常量表达式

难道Color.LightSeaGreen不是一个常量吗?
...全文
244 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
skigil 2012-12-07
  • 打赏
  • 举报
回复
你这有二个问题: 1.color是一个结构,是structure,不是enum或者其它的。结构是不能用于optional的; 2.color.yellow等不是一个常量,而是只读数据,是public readonly property yellow()...函数 你可以通过十六进制来传递所需要的颜色。 color.fromargb(INTEGER)
music_0000 2012-12-07
  • 打赏
  • 举报
回复
你把Color.LightSeaGreen转换成16进制即可
ttsffgg 2012-12-06
  • 打赏
  • 举报
回复
谢谢,明白了,最后决定不用color类型做参数了, 还是用int类型传进来,然后在内部进行转换
Tiger_Zhao 2012-12-06
  • 打赏
  • 举报
回复
刚才查了一下帮助
MSDN:
如何:声明常量

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

所以常量不能是 Color 结构,可选参数也一样不能。
只能用重载
Public Sub test()
test(Color.LightSeaGreen)
End Sub
Public Sub test(c As Color)
...
End Sub
ttsffgg 2012-12-06
  • 打赏
  • 举报
回复
即使使用 Public Const C1 As Color = Color.Azure 也会出现 要求常量表达式 错误
引用 4 楼 Tiger_Zhao 的回复:
自己定义一个 Public 常量,再用。
Tiger_Zhao 2012-12-05
  • 打赏
  • 举报
回复
自己定义一个 Public 常量,再用。
ttsffgg 2012-12-05
  • 打赏
  • 举报
回复
那我要如何给一个可选变量附一个默认值呢?
四惠大战僵尸 2012-12-05
  • 打赏
  • 举报
回复
要求是常量嘛 ,1,2,3,4,5,a,b,c.......
Tiger_Zhao 2012-12-05
  • 打赏
  • 举报
回复
这是个属性。
虽然人人都知道这个属性的值不变,但是编译器不这么认为。

16,555

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧