You can't do this in c#.
I saw an example in msdn in the url:
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003APR.1033/cpguide/html/cpconaccessingdefaultargumentvalues.htm
there you can see that you can declare such a function only in VB, but you can call it in c#.
Another way to implement this is overload.
Suppose you have this function in c++:
void fun(int a, int b=20);
you can call it in c++:
fun(10);
and have: a=10, b=20;
I suggest to do in c#:
void fun(int a, int b)
{
...
}
void fun(int a)
{
fun(a,20); // this will cal the first version of fun with b=20
}