C # 4.0 ist fast abwärtskompatibel mit früheren Versionen, aber es gibt ein paar brechende Änderungen . Für den meisten gewöhnlichen Code werden Sie diese brechenden Änderungen nicht bemerken.
Für die neuen Funktionen in C # 4 können Sie den Wikipedia-Artikel lesen, der eine recht gute Zusammenfassung enthält Beispiele. Die wichtigsten Punkte sind:
Denken Sie auch daran, dass es eine andere Version dazwischen gab - C # 3.0. Eine der wichtigsten Ergänzungen hier ist LINQ und alle Features hinzugefügt, um es zu ermöglichen. Der Unterschied zwischen C # 2.0 und 3.0 ist viel größer als der Unterschied zwischen C # 3.0 und 4.0.
Übrigens ist nicht jeder gültige C-Code C ++ gültig, wie Sie in Ihrer Frage angedeutet haben. Siehe hier :
Im streng mathematischen Sinne ist C keine Teilmenge von C ++. Es gibt Programme, die zwar C, aber kein gültiges C ++ sind und sogar ein paar Arten, Code zu schreiben, der in C und C ++ eine andere Bedeutung hat.
Es gibt einige subtile Änderungen, wie in früheren Versionen. Das Problem ist, dass C # 4 aufgrund der Kovarianz / Kontravarianz einen neuen Typ einer gültigen Konvertierung einführt. Dies bedeutet, dass einige Methoden, die früher nicht waren, jetzt für einen bestimmten Aufruf anwendbar sind. Hier ist ein Code, der sowohl für C # 4 als auch C # 2/3 gilt:
%Vor%In C # 4 wird "Abgeleitet" gedruckt - in C # 2 und 3 wird "Basis" gedruckt.
Dieselbe Art von Problem trat zwischen C # 1 und 2 auf, wo Delegat-Instanzausdrücke nichtgenerische Kovarianz und Kontravarianz erlaubten.
Alle neuen Conversions sind so ziemlich an ein solches Problem gebunden. Meiner Erfahrung nach ist es jedoch unwahrscheinlich, dass diese Dinge tatsächlich ein Problem verursachen.
Darüber hinaus behandelt C # 4 Sperr- und Feld-ähnliche Ereignisse auf eine etwas andere Art und Weise - dies hat wiederum keinen Einfluss auf den meisten Code, aber es ist wissenswert. Chris Burrows hat eine Artikelserie über die Änderungen in seinem Blog.
Alle Features von C # 2.0 sind immer noch in C # 4.0, aber es gibt neue Features in Version 4, die offensichtlich nicht in Version 2 sind.
Alles, was Sie in C # 2.0 geschrieben haben, funktioniert in C # 4.0.
Aber offensichtlich würde das Gegenteil nicht funktionieren .....
Es wurden viele Features aus C # 2.0 wie folgt hinzugefügt:
Bitte überprüfen Sie die obigen Links, um die neuen Funktionen kennen zu lernen.
Aber Vorsicht - achten Sie darauf, dass Sie veraltet sind - OracleClient in ADO.Net zum Beispiel ...
Martin
EDIT - Ja, Simon hat da einen Punkt ... Ich spreche wirklich von .Net. Entschuldigung ...