Is C# a superset of C in anyway, like Objective-C or C++? Is there a way to compile C online with constructs such compiler flags?
Not in any meaningful way. It's inspired by C (among others), but they are quite fundamentally different languages.
C# comes from the "c-like" family as far as syntax is concerned, but as far as architecture it feels more like Java (no pointers [OK, as pointed out below, you can use them, but most people don't know or care about that], arrays are bound checked, garbage collected memory, etc).
You can get much of that in C++, but not in the core.
Let's put it like this:
C
andC#
are similar likerm -rf . /
and# rm -rf . /
are similar
In short, no C is not a subset of C#. The look of many control structures base on C. Like, for-loops, switches, while and so on. At the same time, C# forbids potentially dangerous constructs, like falling off a case in a switch when forgetting a break;, or putting an integer as an if condition where a boolean is expected. The above quote means that C# and C can look very similar, but translate to vastly different results. Where C will not prevent you from removing everything from your partition, C# will protect you from doing this by mistake, figuratively spoken.
At another level, C allows you to type-cast pointers to integers, push those around, cast back and then access memory locations that are then stored in that pointer. C will not protect you from accessing memory which isn't allocated by you. You will get a crash - at best. C# - on the other side - will have exceptions that notice you when you do things like accessing object throgh a null-reference.
C# and C are not really related(aside from similar syntax). C# is jitted down to machine code from IL when the program starts. C# doesn't have pointers with the exception of value types on that stack. C# is fully type safe, C is not. C requires explicit memory management where as C# is garbage collected. The list of differences goes on and on...
C# is very different from C (and also C++ is very different from C). This not because the semanthics, which are at the end not too different, but because of the concepts, the ideas that are behind C#.
When you program in C# you have to think in a different way from what you are used to do if you use C: this is the main difference.