You can declare optional parameters in an interface method but implementing classes are not required to declare the parameters as optional, as Eric Lippert explained. Conver
If one is designing an interface with a method Foo that takes parameter Bar, and 99% (but not 100%) of calls to Foo pass zero for Bar, one must either:
Option #3 seems most convenient to me when it's workable.