vb.net - 在类中的函数中使用颜色作为 optional 参数

标签 vb.net colors optional

如何在某些函数或子函数中声明 optional 颜色参数,就像我以正常方式(我的意思是为该 optional 参数提供一些默认颜色)那样做,因为 vb.net 编译器提示说存在一些错误代码。我该如何解决这个问题。
示例代码如下:

Public Shared Function SomeFunction(ByVal iParam As Integer, Optional ByVal oColor As Color = Color.Black)

        End Function

编译器不接受'=Color.Black'

最佳答案

MSDN 说关于 Optional Parameters对于 Visual Basic

For each optional parameter, you must specify a constant expression as the default value of that parameter. If the expression evaluates to Nothing, the default value of the value data type is used as the default value of the parameter.



所以你不能使用那个语法,你可以写这样的东西
Private Sub Test(a As Integer, Optional c As Color = Nothing)
    If c = Nothing Then
        c = Color.Black ' your default color'
    End If
    ......
End Sub

用C#编写的相同代码如下
private void Test(int a, Color c = default(Color))
{
    if (c.IsEmpty)
        c = Color.Black;
}

在 C# 中,您不能针对空值测试值类型(如颜色、点、大小等)。这些类型从不为空,但它们具有类型的默认值(如整数的 0),因此,如果您需要为值类型传递 optional 参数,您可以使用 new 创建它。带有您想用作默认值的关键字或使用 default keyword并让框架决定哪个值是该类型的默认值。如果让框架选择,那么 IsEmpty 属性(property)将是真实的。

关于vb.net - 在类中的函数中使用颜色作为 optional 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16045479/

相关文章:

casting - 了解类型推断

c# - 连接的TCP套接字如何同时发送/接收多个文件?

colors - wxPython wxListCtrl 选中的行颜色

python - 使用 Python 将颜色添加到索引 PNG 图像

colors - 色轮两侧的十六进制颜色值之间的数学关系是什么?

Scala:访问 optional 对象中的 optional 值

wpf - XAML Canvas 上可放大和缩小的滚动条

.net - vb.net boolean 值和无

vb.net - 从 vb6 迁移到 vb 2005、vb2008、vb 2010 的区别

Java理解