Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

Visual C# 2012 Grundkurs

Das Konzept der DLLs in .NET

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Es besteht die Möglichkeit, in C# Typen zu erstellen, welche nach Fertigstellung in anderen Programmen verwendet werden können. Das wird in diesem Video anhand der Erstellung einer Bibliothek erläutert.

Transkript

In diesem Abschnitt möchte ich zeigen, wie man mit C# eine Bibliothek schreibt und wie man diese Bibliothek dann in C# verwenden kann. C#-Programme bestehen, wie gesagt, aus Typ-Definitionen. Das einfache Programm hier zeigt das auf eine sehr einfache Art. Hier definiere ich einen Typ, in dem Fall eine Klasse "Program". In dem Typ kann ich jetzt Methoden definieren und in den Methoden kann ich jetzt irgendwelche Anweisungen reinschreiben, die dann kompiliert und ausgeführt werden sollen; diese Anweisungen wiederum in Nutzen-Typen, um irgendwelche Aktionen auszuführen. In dem Fall benutze ich den Typ "System.Console" und der soll jetzt eine Aktion ausführen, nämlich er soll irgendetwas ausgeben. Jetzt ist natürlich die Frage: Woher weiß das System überhaupt, dass es diesen Typ "System.Console" gibt? Es sieht eben so aus, dass "System.Console" in einem speziellen Assembly abgelegt ist, das nennt sich "Mscorlib". Alle Typen, die da drinstehen, die werden automatisch von diesem CSC-Compiler schon einmal als existent angenommen. Jetzt stellt sich natürlich die Frage: Wie können wir selber Typen erstellen, die andere Leute in ihren Programmen dann einsetzen können? Also genauso, wie das hier mit "System.Console" passiert ist. Und genau das möchte ich jetzt zeigen. Jetzt brauche ich gerade einmal meinen Windows Explorer hier, "Projects", "Samples", "Hello", und ich erstelle in diesem Verzeichnis eine neue Quellcode-Datei, und zwar will ich die nennen: "Calclib.cs". Unsere Bibliothek soll so eine Calculator-Anwendung sein, die einmal fürs Erste die vier Grundrechenarten beherrschen soll, für Integers.OK, dann fangen wir an. Woraus besteht ein C#-Programm? Genau, es besteht aus der Definition von Typen. Also wir haben einen Typ zu definieren, in dem Fall wieder eine Klasse, also schreibe ich: "Public Class Calculator", so nenne ich die jetzt einmal. Jetzt habe ich also diesen Typ und innerhalb dieses Typs kann ich jetzt Methoden definieren. Also lege ich los. Ich möchte eine Methode "@" haben. Die soll natürlich öffentlich sichtbar sein, soll einen Integer-Wert zurückgeben und soll "@" heißen. Sie nimmt zwei Parameter: "andA, andB", so, wunderbar. Und ich schreibe "return a+b", das ist mein Rückgabewert. Also auch ohne jetzt groß sich mit C# auszukennen, denke ich, wird jeder erraten, was diese Methode tun soll. Der Calculator, der kann jetzt andere Methoden haben, wie z.B. "subtract", und da müssen wir ein wenig einen anderen Wert zurückgeben. Genau das Gleiche machen wir mit "multiply" und "divide". OK, das war unser Calculator. Das Ding müssen wir jetzt kompilieren. Nichts leichter als das, haben wir schon gemacht. Der CSC, der ist ja hier noch in meiner Konsole da. Ich sage jetzt "Csc calclib.cs". Also ich sage es gleich: Wenn ich das jetzt ausführe, wird der Compiler meckern. Jetzt schauen wir mal, was er anmeckert: "Calclib.exe does not contain a static main method suitable for an entry point." Ja, natürlich. Der Compiler versucht, aus diesem Code eine .exe zu machen und keine Bibliothek. Deswegen vermisst er diesen Entry Point. Wir wollen aber eine Bibliothek machen, die braucht keinen Entry Point. Eine Bibliothek ist nämlich gar nicht ausführbar. Für diese Zwecke hat der Compiler einen Compiler-Switch, der heißt "/T" für "Target". Und unser Target, also unser Ziel, soll eine Library sein. Schreib ich jetzt hier einmal hier: "/T Library calclib.cs". Jetzt rufe ich das noch einmal auf und siehe da, das Ganze ist kompiliert und wir haben hier einen Bibliothek. Diese Bibliothek kann ich jetzt in ild.asm öffnen und wir schauen uns jetzt einmal diesen Manifestteil an. Das heißt, wo so grundlegende Eigenschaften unseres Assemblys dargestellt wird. Da sieht man, das ist ein Assembly mit dem Namen calclib. Das ist eine ganz einfache Sache. Hier sieht man das, was ich vorher erklärt habe. Hier ist nämlich eine Referenz auf ein externes Assembly. Dieses externe Assembly heißt mscoree.lib. Weil der Compiler dieses mscoree.lib einbindet, deswegen nehmen wir alle Typen, die im mscoree.lib definiert sind, als bekannte Typen an. Jetzt wieder zurück. Jetzt müssen wir diese hello.cs so abändern, dass sie in irgendeiner Weise diese "calclib.dll" verwenden kann. Ich öffne die wieder und jetzt deklariere ich hier mal eine Integer-Variable "i", und die soll jetzt von unserem Calculator mit der Funktion "@" mal das Resultat aufnehmen, eine Addition von 3 und 5, so. Und das Ganze wollen wir jetzt auf der Konsole ausgeben. Also sage ich jetzt: "3 + 5 =". Und jetzt kommt etwas ganz feines an C#. Ich habe ja jetzt hier einen String. An diesen String kann ich mit dem Pluszeichen beliebige Objekte anhängen. Also ich kann jetzt dieses "i" als Objekt einfach hier dranhängen. Dieses "i", das wird jetzt nach dieser Addition möglicherweise den Wert "8" haben und diese 8, die wird uns jetzt einfach an diesen String angehängt und so können wir das Resultat auf der Konsole sehen.OK, ich speichere das Ganze ab, schließe die Datei. Jetzt geht es ans Rekompilieren. Jetzt ist es so: Ich habe also hier wieder den CS "Hello.cs" und wenn ich denn jetzt so aufrufe, dann wird er natürlich meckern, weil er diesen Calculator überhaupt nicht kennt. Er weiß also gar nicht, was das ist. Ich muss also dem Compiler auf irgendeine Weise sagen: Verwende die "Calclib.dll". Das ist jetzt die Option "/R:calclib.dll", also "/R" steht für Referenz, referenziere die "Calclib.dll". Wir haben gesehen, der ild.asm war in der Lage, sehr genau rauszulesen, was in dieser "Calclib" alles drin ist. Ich öffne das gerade noch mal. Wir haben also das Manifest hier vorhin gesehen. Hier sieht man, dieses Zeichen hier steht für eine Klasse. Also man weiß, dass sich in dieser Bibliothek eine Klasse befindet, aber nicht nur das. Man sieht auch, dass diese Klasse diese Methoden hat. Das sind alles Informationen, die beim Kompilieren zusammen mit dem Code abgelegt werden. Das ist eine fantastische Sache, weil nämlich beim Referenzieren dieser Bibliothek unser Compiler jetzt weiß, dass es diese Klasse "Calculator" gibt und dass sie eine Methode "@" hat. Wenn ich jetzt den Compiler auf die Weise aufrufe, dann meckert er mir. Und zwar, weil ich die "Calclib" nicht richtig geschrieben habe. Das mache ich gerade noch einmal, das ändere ich noch mal. Und zwar: Diese Methoden hier, die müssen alle "static" sein, also sie müssen mit dem Namen "Calculator" aufrufbar sein. Wenn Methoden nicht statisch sind, dann muss man nämlich zuerst ein Objekt anlegen, vom Typ Calculator, um diese Methoden zu benutzen. Das wollte ich mir in dem Fall ersparen, ist auch gar nicht nötig. Also habe ich jetzt überall hier dieses "static keyword" dazugeschrieben. Ich glaube nämlich, der Pfad zum CSC, der ist hier in der Konsole schon vorhanden. Und "/target:library calclib.cs". Jetzt haben wir unsere Bibliothek und dann haben wir "csc /r: calclib.dll" und unsere "hello.cs"-Datei. Jetzt funktioniert alles wunderbar, unsere "hello.exe" ist kompiliert. Was jetzt noch fehlt ist sie auszuführen, um zu sehen, dass das Ganze funktioniert. Schön, in dem Abschnitt habe ich also gezeigt, wie man eine Bibliothek erstellen kann und wie man mit C# diese Bibliothek wieder referenzieren kann. Bei der Gelegenheit haben wir auch gleich noch eine Feinheit der String-Klasse kennengelernt, nämlich, dass wir an Strings beliebige Objekte anhängen können.

Visual C# 2012 Grundkurs

Schreiben Sie eigene Programme in C# und lernen Sie dazu alle Schlüsselwörter und die meisten Konstrukte kennen, um sicher mit dieser Programmierspreche umzugehen.

7 Std. 1 min (44 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!