省略可能な引数

public void Method() { ... }
public void Method(string first) { ... }
public void Method(int second) { ... }
public void Method(string first, int second) { ... }

と、オーバーロードするのが基本なんだけど、VB からの見た目を良く(?)するために、

public void Method([Optional]string first, [Optional][ParameterDefaultValue(int.MaxValue)] int second) { ... }

などとすると、int.MaxValue が特別な意味を持ってしまうので int の表現できる値をすべてサポートできないし、仮に省略をしめすマジックナッバーとして妥当な値だとしても C# から second を省略した場合の動作を呼び出すために int.MaxValue を引数とすることを旨く表現できない。

public void Method([Optional] string first, [Optional] int? second) { ... }

として null を渡せるようにすると C# からのアクセスはある程度わかりやすくなるのだが、これだと VB からの見た目をよくするどころか、悪くしてしまっている。
結局オーバーロードにするんだが、それならそれですべてオーバーロードに統一しようとすると、first, second が共に string 型の場合とか、困るんですよね〜。