The explicit keyword is really only necessary for single argument constructors. With two or more arguments (that don't have defaults) the compiler won't generate implicit conversions.