Let’s say we have the following method declaration:
Public Function MyMethod(ByVal param1 As Integer, _ Optional ByVal param2 As Integer = 0, _ Optional ByVal param3 As Integer = 1) As Integer Return param1 + param2 + param3 End Function
How does VB.NET make the optional parameters work within the confines of the CLR? Are optional parameters CLS-Compliant?
Interestingly, this is the decompiled C# code, obtained via reflector.
Notice the Optional and DefaultParameterValue attributes. Try putting them in C# methods. You will find that you are still required to pass values to the method. In VB code however, its turned into Default! That being said, I personally have never use Default even in VB code. It feels like a hack. Method overloading does the trick for me.
Default does help though, when dealing with the Excel Interop, which is a pain in the ass to use straight out of the box in C#.