Microsoft largely cloned the Java Runtime to create the .NET Runtime and similarly cloned Java to create C#.
The two are so similar that Java bytecode to .NET bytecode translators exist. With some, it is possible to take a class defined in Java, subclass it with C#, call it from Java, etc...
I was in 2001 at a MSFT gold partner, you are skipping quite a few relevant steps on that timeline.