Κατά την διάρκεια της δημιουργίας της πλατφόρμας .ΝΕΤ οι κλάσεις και οι βιβλιοθήκες γράφτηκαν χρησιμοποιώντας ένα μεταγλωττιστή με το όνομα Simple Managed C (SMC). Τον Ιανουάριο του 1999 ο Άντερς Χάιλσμπεργκ συγκρότησε μια ομάδα με σκοπό να φτιάξει μια καινούρια γλώσσα με όνομα Cool (C-like Object Oriented Language). Παρόλο που η Microsoft σκεφτόταν να κρατήσει το όνομα Cool σαν το τελικό όνομα της γλώσσας αυτό δεν έγινε ποτέ για λόγους πνευματικών δικαιωμάτων. Μέχρι τον Ιούλιο του 2000 όπου ανακοινώθηκε η πλατφόρμα .NET η γλώσσα είχε είδη μετονομαστεί σε C# στην οποία αργότερα εισήχθησαν οι βιβλιοθήκες τηςASP.NET.
Ο Τζέιμς Γκόσλινγκ (προγραμματιστής τηςJava) το 1994 μαζί με τον Μπιλ Τζόι (συνιδρυτής τηςSun Microsystems) αποκάλεσαν την C# απομίμηση της Java. Ο Γκόσλινγκ επίσης συμπλήρωσε ότι η C# είναι ίδια με την Java απλά χωρίς αξιοπιστία, παραγωγικότητα και ασφάλεια. Οι συγγραφείς ενός βιβλίου της C# ισχυρίστηκαν ότι η Java και η C# είναι πανομοιότυπες επαναληπτικές και χωρίς καινοτομίες. Τον Ιούνιο του 2000 ο Άντερς Χάιλσμπεργκ υποστήριξε ότι η C# δεν είναι κλώνος της Java αλλά ότι είναι πολύ πιο κοντά στην C++.
Από τότε που κυκλοφόρησε η δεύτερη έκδοση της C# το Νοέμβριο του 2005, η C# και η Java άρχισαν να απομακρύνονται η μία από την άλλη, με αποτέλεσμα όσο περνάει ο καιρός να μοιάζουν όλο και λιγότερο. Μια από τις πρώτες σημαντικές διαφορές ήταν στην υλοποίηση των γενικών αντικειμένων. Η C# παρέχει "πρώτης-κλάσης" γενικά αντικείμενα τα οποία μπορούν να χρησιμοποιηθούν σαν οποιαδήποτε άλλη κλάση, με τον κώδικα να εκτελείται κατά τη διάρκεια της φόρτωσής της. Αντιθέτως τα γενικά αντικείμενα της Java παρέχονται από τη γλώσσα κατά τη διάρκεια της σύνταξής της και δεν επηρεάζουν τον ήδη υπάρχοντα κώδικα. Επιπλέον η C# πρόσθεσε κάποια ακόμα χαρακτηριστικά στην τρίτη έκδοσή της, τα οποία επιτρέπουν στους προγραμματιστές να χρησιμοποιούν τεχνικές όπως τα κλεισίματα (closures).
Η C# είχε κάποτε μια μασκότ που ονομαζόταν Άντι σαν φόρος τιμής στον σχεδιαστή της, αλλά αποσύρθηκε στις 29 Ιανουαρίου του 2004.