C#... I never touched. Mostly because it's tied to only Microsoft, which would be incredibly limiting in my opinion.
Actually C# will run in any computer. C# is one of the many standard languages recognized by all makers.
The real issue for OS or hardware cross-platform implementation is to have an intermediate layer which is a framework between the language and the machine/assembly language. True it is that C# was made specifically for Microsoft's .NET Framework (actually tailored specifically for development toward .NET), but C# is accepted in the industry as a standard language which any developer may use to write coding of applications and any computer will read it as long as the runtime framework is present, as what is written in C# will be interpreted by that framework layer.
Think that the framework is unnecessary overhead? Game engines are another example of an intermediate layer framework in which you may develop applications and software, often both OS and hardware cross-platform. No coder has the ability to do all the things that they want to do in machine/assembly language because it is unreadable to humans. C# is another standard high level language among many which enables the coder to command the computer what to do.