MSDN 说关于Visual Basic 的可选参数
对于每个可选参数,您必须指定一个常量表达式作为该参数的默认值。如果表达式的计算结果为 Nothing,则使用 value 数据类型的默认值作为参数的默认值。
所以你不能使用那种语法,而是你可以写这样的东西
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),因此,如果您需要为值类型传递可选参数,您可以使用new
带有您想要的值的关键字创建它用作默认值或使用default
关键字并让框架决定哪个值是该类型的默认值。如果您让框架选择,那么IsEmpty属性将为真。