If these values are fixed, and you don't want to pass other value as argument, why even use them? Why not a single bool?
This is not what optional and named parameters are made for.
First of all read this:
http://msdn.microsoft.com/en-us/library/dd264739.aspx[
^]
The theory:
If you create a routine (function, procedure, method or that like), you define a formal parameter list in the routine header. These are the names you use in the routine body. In strongly typed languages you also define their desired type. When you call the routine, you pass the actual parameters. The compiler/interpreter has to match/bind them. There are following types of binding:
- order binding: this is common, the first actual parameter is bound to the first formal parameter and so on. If the language supports optional parameters, you can skip them, and the default value will be used. In some languages if you skip one, you have to skip all to the right of it too.
- name binding: the system tries to bind the actual parameter to the formal parameter based on it's name. Thus, in the actual parameter list, you have to specify the name of the parameter you want to feed with the actual parameter
- type binding: the system tries to match and/or set the actual type of the parameters. Automatic type cast might occur.
In c# 4.0 you have all.