Krautkanal.com

Veröffentlicht am 2015-03-20 17:28:50 in /prog/

/prog/ 6809: Wo finde ich guten, modernen (inkl LINQ etc) C# code al...

emilioiantorno Avatar
emilioiantorno:#6809

Wo finde ich guten, modernen (inkl LINQ etc) C# code als Vorlage? D.h. inklusive pattern und best practices?

Ich bin Java-Entwickler, muss aber die Bachelorarbeit in C# schreiben. Ich habe es nur für 4 Tage mal probeweise eingesetzt.

ajaxy_ru Avatar
ajaxy_ru:#6813

C# ist wie Java, nur ein bisschen hübscher. Lerne die Basics der Sprache und dann wende einfach dein Wissen aus Java an.

iqbalperkasa Avatar
iqbalperkasa:#6822

>>6813
Aber C# hat so ein Paar Konzepte wie Structs, die in Java stattdessen über Umwege simuliert werden - ist immerhin eine ältere Sprache.

Auch sind Typangaben z.B. optional und ich weiß nicht, wann ich die denn nun angeben muss.

Und von der inneren Mechanik ist auch alles anders, da z.B. alle Datentypen Generics sind statt wie Primitives bei Java, mit entsprechenden Geschwindigkeitseinbußen

Und seit LINQ gibt es so viele verschiedene Wege, drei Zeilen Programm zu schreiben.

ryanmclaughlin Avatar
ryanmclaughlin:#6825

>>6822
>Aber C# hat so ein Paar Konzepte wie Structs, die in Java stattdessen über Umwege simuliert werden - ist immerhin eine ältere Sprache.
woohoo

>Auch sind Typangaben z.B. optional und ich weiß nicht, wann ich die denn nun angeben muss.
Du kannst nicht einfach den Typ weglassen:

entweder var (abgeleitet), dynamic (dynamisch typisiert) oder halt den Typnamen

Im Zweifelsfall den Typnamen verwenden, außer wenns offensichtlich und nervig ist, wie in generischen for-Schleifen.

>Und von der inneren Mechanik ist auch alles anders, da z.B. alle Datentypen Generics sind statt wie Primitives bei Java, mit entsprechenden Geschwindigkeitseinbußen
Klassen, meint er wohl.

Die Standard-JVM und CLR sind ziemlich gleich, was Geschwindigkeit angeht.
Sonst gibt es wie immer bessere Optionen was Compiler aber auch Sprachen angeht.

>Und seit LINQ gibt es so viele verschiedene Wege, drei Zeilen Programm zu schreiben.
Überbewertetes Compiler-addon, muss man nicht nutzen.

Außerdem sind viele andere Dinge ähnlich,
16 bit Fakeunicode, alles muss in Klassen (oder zu Klassen auflösbaren Konstrukten) sein, Interfaces.

Gut, dann gibt es Delegaten, Events und einen Haufen schöner neuer Dinge, die es in Java nicht gibt...
Aber die relevanten davon (Delegaten und Events) sind durchaus beherrschbar.

leelkennedy Avatar
leelkennedy:#6826

>>6825
>außer wenns offensichtlich und nervig ist, wie in generischen for-Schleifen.
Ich hab noch nie verstanden warum es so viel einfacher sein soll "var" statt "int" zu schreiben... es sind jeweils 3 Buchstaben und sind auch beide in etwa gleich viel Entfernung zur Grundposition.

aadesh Avatar
aadesh:#6834

>>6825
OP hier. Gut, wo kann ich guten Muster-Code finden, wo diese neuen Dinge richtig eingesetzt werden? In den Microsoft-Tutorals werden ja meist nur AUsschnitte ohne Kontext gezeigt, aber vielleicht gucke ich auch nur an falscher Stelle

Insbesondere interessiere ich mich eben für die best practices, wie sie in Java z.B. darin bestehen, Logger für jeden EJB mit Logik zu benutzen, bestimmte Dinge zu annotieren usw.

emmakardaras Avatar
emmakardaras:#6837

>>6826
Generische For-Schleifen sind foreach in C#.

>>6834
Sowas kenne ich leider nicht wirklich. Aber z.B. auf Github und Codeplex müsste es einiges geben. Z.B. gibt es dort ein Plugin interface, wie man es richtig macht.

fritzronel Avatar
fritzronel:#6880

>>6826
Ich handhabe das persönlich so - primitive Datentypen schreibe ich aus (string/String, int/Integer), aber bei anderen Klassen nehme ich üblicherweise var. Steht ja eh irgendwo daneben um was es geht - bei var bla = new Blubber() sieht jeder den Typ. Auch gehts bei anonymen Klassen oft gar nicht ohne var.

adhiardana Avatar
adhiardana:#6881

>>6809
Bernd, wenn du Java kannst, was ist dann das Problem? Die Sprache ist doch nur Mittel zum Zweck. Such einfach danach wie man XY-Java-Ding in C# macht. Auch gibts sicher ein paar Resourcen mit Übersichten zu Unterschieden.

Die interessantesten Sachen sind sicher die schon genannten - Events (Java hat da nur den klassischen Weg über Interfaces), Delegates (Java 8 Method References sind etwas verwandt), Generics (finde ich in C# besser). LINQ entspricht im Grunde Java 8 Streams, wobei es bei LINQ zwei Syntaxarten gibt (Query (sieht etwas aus wie SQL) und Method (= Java 8 Streams)).

Ansonsten haben sich ein paar Unterschiede inder Formatierung eingebürgert (Methodennamen groß, Interfaces fangen mit 'I' an, abstrakte Klassen beginnen mit Base) Aber das kann man natürlich handhaben wie man will.
Ob man "var" benutzt oder nicht fällt da auch rein, aber das heißt nicht das man den Typ weglassen kann - er ergibt sich nur aus dem Kontext.

Aber komm doch mal mit einem konkreten Problem.

artheft_ua Avatar
artheft_ua:#6885

>>6881
Der Punkt bei LINQ ist es eigentlich, dass eine Expression<Func<Blah, Blub>> dabei heraus kommt die man dann wieder zerlegen kann um etwas anderes daraus zu machen (SQL, LDAP).

Neuste Fäden in diesem Brett: