Whilst M4N's answer (#if (!DEBUG)
) makes most sense, another option could be to use the preprocessor to amend other flag's values; e.g.
bool isRelease = true;
#if DEBUG
isRelease = false;
#endif
Or better, rather than referring to whether we're in release or debug mode, use flags that define the expected behavior and set them based on the mode:
bool sendEmails = true;
#if DEBUG
sendEmails = false;
#endif
This is different to using preprocessor flags, in that the flags are still there in production, so you incur the overhead of if (sendEmails) {/* send mails */}
each time that code's called, rather than the code existing in release but not existing in debug, but this can be advantageous; e.g. in your tests you may want to call your SendEmails()
method but on a mock, whilst running in debug to get additional output.