Also is there a way to use run-time values for optional method parameters?
Optional parameters are compiled into the assembly and as such (just like anything that is designated as const) they must be a compile-time constant.
const
And no, you cannot use execution-time values as optional parameters.