Ich weiß, dass es einige schöne neue Funktionen in C # 4.0 gibt, aber ich kann mir nicht vorstellen, dass es einen zwingenden Grund gibt, bestehende Projekte auf den neuesten Stand zu bringen oder zu neuen Projekten zu wechseln.
Ich habe einige Posts gesehen, wo Leute gesagt haben, dass, wenn ihr Hosting-Dienst .Net 4 nicht anbietet, sie einen anderen Provider finden würden, da .Net 4 in ihre Richtung <?>
geschrieben hat.
Jetzt versucht mein Chef, mich dazu zu bringen, dass wir alle unsere Produktionsumgebungen auf C # 4 umstellen und es jetzt tun werden.
Es stellt sich also die Frage, ob jemand aus einem überzeugenden Grund begonnen hat, C # 4 zu verwenden oder ein Projekt in C # 4 umzuwandeln. Gab es eine Funktion, die Sie einfach haben müssten, die Ihr Leben so viel einfacher machen würde?
Es gibt einige coole neue Funktionen in C # 4.0 :
Scott Guthrie geht in seinem Blogartikel auf das Features von .NET 4 im Allgemeinen . Eine weitere großartige Ressource ist ein Whitepaper bei Ссылка . Allerdings würde ich bezweifeln, dass Sie eines / eine dieser neuen Funktionen sofort brauchen . Als schrieb Scott Hanselman :
es gibt viele Sachen, die neu sind und hinzugefügt in .NET 4, aber nicht in diesem "überwältigend-ich-muss-wieder-lernen-alles" Weg.
Ob Sie nun upgraden sollten oder nicht, hängt daher von einer Vielzahl anderer Faktoren ab. Einige Gründe, die mir in den Sinn kommen:
Ein offener Dialog mit Ihrem Vorgesetzten erscheint angemessen, um seine Argumentation für das Upgrade zu verstehen. Ich würde argumentieren, dass, weil es glänzend ist, kein zwingender Grund ist.
Als Referenz diese datierte Stack Overflow Frage " Warum nicht auf upgraden? Das neueste .net-Framework "liefert das Gegenteil zu Ihrer Frage.
Ehrlich gesagt System.Collections.Concurrent wurde entwickelt Multithread-Anwendungen ein Kinderspiel.
Die neue und verbesserte System.Linq.Expressions macht dynamisch kompilierten Code zu schreiben scheint wie ein Kinderspiel.
Die neue benannte Parameter-Funktion bedeutet, dass ich große Konstruktoren haben kann und nicht verwirrt bin, was die einzelnen Parameter sind. Unveränderliche Objekte sind einfach viel einfacher.
Ist Ihre Frage spezifisch für C # 4.0 oder .NET 4.0?
In C # 4.0 gibt es nur ein paar wirklich nette neue Funktionen. Kovarianz / Kontravarianz ist nicht immer nützlich, aber wenn man sie braucht, kann sie sehr viel Schmerz ersparen. Optionale Methodenparameter können viele hässliche Methodenüberschreibungen reduzieren und bestimmte Methodenaufrufe viel sauberer machen. Wenn Sie COM oder IronPython oder eines von einigen ähnlichen Frameworks verwenden, kann das Schlüsselwort dynamic
auch ein echter Lebensretter sein.
.NET 4.0 hat im Allgemeinen eine Tonne wirklich interessanter Funktionen in einer Vielzahl von Frameworks. Die Unterstützung von Fremdschlüsseln in Linq to Entities erleichtert uns beispielsweise das Leben erheblich. Viele Leute sind wirklich begeistert von POCO-Unterstützung. Sie haben auch Unterstützung für einige der LINQ-Methoden (z. B. Distinct
) hinzugefügt, die zuvor im Entity Framework fehlten.
Es wird also wirklich alles darauf hinauslaufen, welche Frameworks Sie verwenden und wie Sie sie verwenden und wie teuer es für Sie ist, den Switch zu erstellen.
Erstens, was für mich zwingend ist, kann dir nichts bedeuten. Wenn ich das gesagt habe, würde ich Visual Studio upgraden, wenn das Budget es erlaubt. In der Tat, persönlich denke ich, es gibt ein großes Karrieresrisiko, wenn man bei einem Unternehmen bleibt, das seine Werkzeuge nicht auf dem neuesten Stand hält. Sie werden in Ihrem Wissen über das Feld zurückfallen, ohne Zugriff auf die neuesten Tools.
Um alle Ihre Projekte zu konvertieren, nur um sie zu konvertieren, scheint es mir eine Torheit zu sein. Abgesehen von all der zusätzlichen Arbeitsverteilung (und dem Upgrade der Maschinen auf .NET 4) müssen Sie die Möglichkeit in Betracht ziehen, dass etwas schief geht. (Und wenn Sie wie ich sind, müssen einige Dinge aus Programmen von Drittanbietern aufgerufen werden, die .NET 3.5 verwenden, wodurch sie nicht konvertiert werden können.)
Meine erste Regel wäre, dass nichts konvertiert wird, es sei denn, du arbeitest trotzdem daran. Aber ich würde ernsthaft versuchen, alles zu konvertieren, das Verbesserungen von entweder parallelem Code oder COM-Interop verwenden könnte.
Ich habe ein überzeugendes Projekt, das konvertiert wurde. Ich hatte eine lange laufende Webmethode aufgerufen. In der Version, die jetzt existiert, komme ich von der Methode zurück, ohne die Ergebnisse zu kennen. Stattdessen gab ich dem Benutzer eine Möglichkeit, später zu überprüfen. Durch den Wechsel zu einer parallelen foreach-Schleife funktioniert das viel besser und ich kann den Benutzer wissen lassen, ob es Fehler gab.
Das gleiche Projekt wird auch auf RIA-Dienste umgestellt, die den eigenen Code stark verbessert und reduziert haben.
Wenn Sie heute ein neues Projekt starten, ist es wahrscheinlich am besten, es mit 4.0 zu starten, da Sie es irgendwann sowieso migrieren müssen (vorausgesetzt, es bleibt lange genug bestehen, ältere Versionen von .net werden es tun) hört einfach auf unterstützt zu werden).
C # 4 impliziert andere Dinge .. abhängig von Ihrem Projekt ... WCF 4, WPF 4, ASP.NET 4, MVC 2, Entity Framework 2, etc .. Sehen Sie sich nicht nur C # als Grund an ändern, müssen Sie auch auf den ganzen Stapel schauen. Wenn es nichts Zwingendes gibt, dann ist es wahrscheinlich eine kluge Wahl, dort zu bleiben, wo man ist.
Wenn Sie WPF / Silverlight ausführen, würde ich definitiv ein Upgrade auf Visual Studio 2010 empfehlen (ich weiß, dass Sie .NET 4.0-Code ohne IDE schreiben können, aber das ist ein Randfall, falls es jemals einen gab).
Die Multi-Monitor-Unterstützung ist geschickt, aber fehlerhaft. Ich verbringe viel Zeit damit, Fenster zum Aktualisieren zu bekommen.
In Bezug auf die Sprache ist das COM-Interop (wie @Gvs erwähnt) auch mit dem dynamischen Datentyp und den optionalen Parametern erheblich verbessert.
UPDATE: Die Unterstützung mehrerer Monitore ist mit ziemlich solide VS 2010 SP1 .
Wenn Sie Ihren Chef dazu bringen können, für die $ 10.000 + Visual Studio Ultimate Edition zu popeln, IntelliTrace ist ein überzeugender Grund, um Ihre Umgebung zu verbessern und die Begründung genug für die Investition.
Für mich gibt es zwei Dinge:
Je kompakter der Code (dh wenn Sie die Idee ohne Zusatz "oh, wie Sie die Beschränkung Y der Sprache zu vermeiden"), desto besser, weil der Code ist viel einfacher zu pflegen und es ist schwieriger, ein dumm zu machen (oder schlimmer) Fehler.