Using Color As Optional Parameter In a function within a class

colors, option-type, vb.net

Solution

MSDN says about Optional Parameters for 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.

So you can't use that syntax, instead you could write something like this

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

The same code written in C# is the following

private void Test(int a, Color c = default(Color))
{
    if (c.IsEmpty)
        c = Color.Black;
}

In C# you cannot test a Value type (like Color, Point, Size etc...) against a null value. These types are never null, but they have a default value for the type-(Like 0 for integers), so, if you need to pass an optional parameter for a value type you could create it with the `new` keyword with the values you would like to use as default or use the `default` keyword and let the framework decide which value is the default for the type. If you let the framework choose then the IsEmpty property will be true.

Problem

How can I declare an optional color parameter in some function or sub, as if I do that in the normal way (I mean to give some default color for that optional parameter) as the vb.net compiler complains that there is some error in that code. How do I resolve this issue. Sample code below: ``` Public Shared Function SomeFunction(ByVal iParam As Integer, Optional ByVal oColor As Color = Color.Black) End Function ``` The compiler does not accept '=Color.Black'

Original source

Related problems