The following code is perfectly valid C#, and compiles without errors:
_ = 5;
If we take it a bit further, we can do something like this:
int _, __, ___, ____;
_ = 5; __ = 10; ___ = 15; ____ = 20;
_ = __ - _ * ____ / ___;
Now I feel like I'm playing Hangman. I feel I should be filling in the blanks.
I've never run into anything like this in real code, I'm glad to say. But if Dotfuscator or any other obfuscating tool want to make their obfuscated code even harder to read, they should stop using the easy-to-remember "a", "b" .. "aa", "ab" variable names and switch to underscores. It's horrible.