Announcement

Collapse
No announcement yet.

Wichtige Verständnisfragen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Wichtige Verständnisfragen

    Hallo Leute,

    ich bin gerade dabei mich mit C# zu beschäftigen. Ein wenig Programmiererfahrung habe ich mit Java gemacht. Ich habe einige grundlegende Verständnisfragen zu C# und würde mich freuen, wenn ich meine Wissenslücke füllen könnte.


    1.) In Java konnte man eine Klasse schreiben ohne dass darin eine main - Methode enthalten war. Man erstellte eine weitere Klasse und rief über eine Instanz der vorher geschriebenen Klasse ihr Methoden auf. In C# muss jede Klasse eine Main-Methode haben. Was, wenn ich genauso wie in Java verfahren möchte ? Welche Möglichkeiten habe ich jetzt mit C# ? Helfen mir Assemblies weiter ?

    2.) Ich benutzte eine Windows-Plattform und arbeite mit dem dazugehörigen Compiler vom SDK. Über die Eingabeaufforderung wandle ich meinen Quellcode in den IL-Code um (csc MeineKlasse.cs). Warum entsteht jetzt eine .exe Datei , die ganz normal z.B. über den Explorer ausgeführt werden kann? Woran erkennt Windows eigentlich, dass es sich um exe-Datei handelt, die erst mit dem JIT-Compiler „interpretiert“ werden muss oder um eine „unabhängige“ exe-Datei ? Wird diese Information in den IL-Code integriert ?

    3.) Wie muss ich vorgehen, um eine exe-Datei meines Programms zu erstellen, die unabhängig vom .Net Framework laufen kann (z.B. bei einem Freund, der „nur“ Win98 benutzt) ?

    4.) Ich weiß, dass gute „Tricks“ ungern verraten werden, trotzdem möchte ich den Versuch machen und diese Fragen stellen. Ich möchte keinen Quellcode sondern nur die Idee, die dahinter steckt erfahren. Also : Ihr kennt doch sicherlich die Installationsfenster von verschiedenen Programmen, bei denen man immer „Weiter“ klickt um zum nächsten „Benutzereingabe- Interface“ zu gelangen z.B. Lizenz akzeptieren --> Installationspfad eingeb u.s.w. Ich würde gerne Wissen, wie ich mit C# ein Windows –Form erstelle, worin ich durch das Klicken eine Buttons auf die „nächste Seite“ komme ?

    Würde mich freuen, wenn ihr mir helfen könntet.

  • #2
    1)

    In C# braucht überhaupt keine Klasse eine statische main Funktion, im Gegenteil, es darf meines wissens sogar maximal eine Klasse pro Assembly eine solche Methode implementieren. Ähnlich wie man in Java nur eine öffentliche Klasse pro File definieren kann. (In C# werden ja alle klassen zu einem Assembly kompiliert, nicht wie in java zu mehreren seperaten class Files)

    Der einzige Zweck der Main Funktion ist der Einstiegspunkt in die Applikation, aber einen solche Einstiegspunkt gibt es nur einen pro Assembly (=Applikation). Die OOP Konzepte sind ansonsten weitgehend vergleichbar mit denen aus Java (Instanzen, Members, Interfaces etc).

    2)

    Ich schätze es ist das Ziel, dass man eine ausführbare Applikation erhält, nicht?

    Eine Assembly besteht im Grunde aus 3 Teilen: Der Header im üblichen PE Stil wie jede andere klassische EXE, dann folgen jedoch zuerst die Metadaten und dann der eigentliche IL Code.

    Die EXE ist im grunde also eine wie jede andere, jedoch im Header die CLR (vgl. JRE) lädt ind ihr dann die Kontrolle über die weiteren Schritte überlässt. Siehe auch:

    http://msdn.microsoft.com/theshow/episode020/TranscriptText.asp

    3)

    Ähnlich wie bei Java die JRE ist auch ein .NET Programm auf die CLR angewiesen. Ich mag mich erinnern mal was über Projekte gelesen zu haben, die Teile der Runtime in die EXE reinkompilieren versuchen, um dann eben diese Unabhängigkeit zu erreichen. Bei Java gibt es ja ähnliche Techniken. Über Sinn und Unsinn dieses Vorgehens möchten wir hier mal nicht diskutieren, v.a. da die Runtime Redist (die übrigens auch auf Win98 läuft) auch nicht soo gross ist (v.a. im Vergleich mit einer aktuellen Java Engine)

    4)

    Warum benutzt du nicht den MS Installer? VS.NET kann dir so ein .MSI File auch mehr oder weniger automatisch zusammenbauen (was dir aber wenig bringen dürfte, wenn du mit dem SDK direkt arbeitest). Ich glaube nicht dass es sich heute noch lohnt, einen Installer selber auszuprogrammieren, es gibt aber ziemlich sicher auf dem Netz kommerzielle und freie Lösungen spezifisch für .NET, vielleicht schreibt da jemand anders mehr dazu ...

    HTH
    Chri

    Comment


    • #3
      Danke für die Antworten. Ich werde mir mal die Runtime Redist anschauen.

      zu 4.) ich meinte allegemein die Möglichkeit per Button (in irgendeiner Win-Apllikation) auf die "nächste" Seite zu kommen. Wird da jedesmal ein neues Form erstellt und das alte gelöscht/ unsichtbar gemacht oder wie muss man sich das vorstellen

      Comment


      • #4
        Hallo,

        > zu 4.)

        auf der CodeProject-Webseite <i>http://www.codeproject.com</i> wird im Artikel <b>Another wizard for .NET using tab control</b> ein möglicher Implementierungsweg über die <b>TabPage</b>-Klasse beschrieben

        Comment


        • #5
          Vielen Dank für Antwort. Ich werde mich da weiter informieren

          Comment

          Working...
          X