[.NET] Zusammenhang der verschiedenen Sprachen

byte_head

Captain
Registriert
Jan. 2005
Beiträge
3.674
Hi,

ich habe ein Problem mit dem Verständniss von dem .NET-Prinzip:

Quotes sind von hier:

http://www.galileocomputing.de/openbook/visual_basic/Kapitel_01-002.htm

Eine Klasse, die in C# geschrieben ist, kann von einer Klasse in Visual Basic 2005 beerbt werden, beide Klassen können Daten miteinenader austauschen und Ausnahmen weiterreichen. Es gibt unter .NET keine bevorzugte Programmiersprache.

Eine in C# 2005 geschriebene Klasse kann aus Visual Basic 2005, J# oder jeder anderen .NET-konformen Sprache heraus aufgerufen werden,...

Wikipedia.org schrieb:
OO liegt demnach eine Aufteilung der zu beschreibenden Welt in Objekte mit ihren Eigenschaften und Operationen zugrunde. Ergänzt wird dies durch das Konzept der Klasse, bei dem Objekte aufgrund ähnlicher Eigenschaften zusammengefasst werden.

Wenn ich in C# ein Programm (Objekt?) schreibe und zu einer Klasse zusammenfüge, kann ich doch diesen Sourcecode nicht in VisualBasic nutzen? Ich bin grade echt verwirrt. :/

MfG, byte
 
byte_head schrieb:
Wenn ich in C# ein Programm (Objekt?) schreibe und zu einer Klasse zusammenfüge, kann ich doch diesen Sourcecode nicht in VisualBasic nutzen? Ich bin grade echt verwirrt. :/

Du musst Dich zunächst mit dem Prinzipien von Klassen und Vererbung vertraut machen.

Ein Programm schreibt man immer in Form von Klassen. Objekte sind lediglich Instanzen von Klassen (z.B.: Man schreibt eine Klasse "Button". Jeder Button auf der Oberfläche ist eine Instanz dieser Klasse und verwendet immer den selben Code).

Klassen lassen sich durch Ableitung im Verhalten anpassen und erweitern.

Und in .NET ist es eben möglich auch über Sprachgrenzen hinweg Klassen zu nutzen, d.h. Du kannst aus C# eine in VB.NET geschriebene Klasse aus aufrufen oder eben auch durch Ableitung erweitern.
 
Das hat jetzt prinzipiell noch nichts mit OOP zu tun, aber mit der .NET Architektur.
Wie der Vorschreiber sagt:
"Programm" = exe = Assembly
"Klassenbibliotheken" = dll = Assembly

In der Assembly ist nicht C# oder VB.NET code, sondern eine zwischensprache MSIL gespeichert. Von daher ist es .NET egal, in welcher Ursprungssprache die Assembly gecoded wurde. (Da gibt's doch sogar Delphi.NET oder?) Mehr dazu hier: http://de.wikipedia.org/wiki/.NET

Von daher: Doch, man kann man kompillierte VB.NET "Klassen" (Assemblies) mit C# benutzen und umgekehrt. (Du verwendest _nicht_ Sourcecode VB.NET in C# -> die Aussage macht so keinen Sinn von Dir, man verwendet die Klassen aus den kompillierten Assemblies) HTH
 
Zuletzt bearbeitet:
Also...

Ich habe in VB z.B. die Klasse "Button" geschrieben und verwende diese jetzt für mein C# Projekt, dabei brauche ich keinen Sourcecode sondern nur das Produkt "Klasse".

Der Compiler von .NET ist nicht nur C# oder nur VB sondern beherrscht alle .NET Sprachen und daher geht das?

Danke schonmal. :)
 
Ungefähr, aber nicht ganz ;)

Du kannst in derselben Solution das Projekt mit dem VB.NET SourceCode der Klasse des "Button" haben und daneben das andere C# Projekt. Es geht aber auch ein reines C# Projekt mit einer Referenz auf die Assembly mit der Klasse "Button" (kein Zugang zum VB.NET Sourcecode).

Es gibt nicht DEN einen .NET Compiler. Die Compiler csc.exe, vbc.exe setzen die Hochsprache C# und VB.NET in MSIL-Anweisungen um. (Assembly)

PS: Pass auf mit der saloppen Bezeichnung VB. Denn VB != VB.NET
 
kaepten schrieb:
Du kannst in derselben Solution das Projekt mit dem VB.NET SourceCode der Klasse des "Button" haben und daneben das andere C# Projekt. Es geht aber auch ein reines C# Projekt mit einer Referenz auf die Assembly mit der Klasse "Button" (kein Zugang zum VB.NET Sourcecode).
-
PS: Pass auf mit der saloppen Bezeichnung VB. Denn VB != VB.NET


Vielen Dank, aber mit ein paar Begriffen habe ich noch so meine Probleme.

Solution -> Programm/Projekt?
daneben? wie darf ich mir das vorstellen?

Beim reinen C# Projekt.
Wenn ich auch die Assembly verweise, verweise ich doch auf den komplett "fertigproduzierten" Button zu.
Der schon das compilen etc hinter sich hat...?

Die MSIL-Ebene kommt nach der Compilerebene (Ausführungsebene?)
 
Vielen Dank, aber mit ein paar Begriffen habe ich noch so meine Probleme.

Solution -> Programm/Projekt?
daneben? wie darf ich mir das vorstellen?
Hast Du schon eine Entwicklungsumgebung?

Beim reinen C# Projekt.
Wenn ich auch die Assembly verweise, verweise ich doch auf den komplett "fertigproduzierten" Button zu.
Der schon das compilen etc hinter sich hat...?
Ja. Weil Assembly = kompiliert.

Die MSIL-Ebene kommt nach der Compilerebene (Ausführungsebene?)
MSIL-Ebene? :D Der Compiler erstellt MSIL, wie z.B. ein herkömmlicher C++ kompiler sog. "Maschinencode" erzeugt.
 
kaepten schrieb:
Hast Du schon eine Entwicklungsumgebung?

nein, heute zum ersten Mal reingeschnuppert!

Ja. Weil Assembly = kompiliert.

MSIL-Ebene? :D Der Compiler erstellt MSIL, wie z.B. ein herkömmlicher C++ kompiler sog. "Maschinencode" erzeugt.

Muss MSIL nicht nochmal in Maschinensprache umgewandelt werden!?
 
Nein. Die Common Language Runtime (CLR) führt den Common Intermediate Language (CIL) aus. SORRY, scheinbar heisst das Heut nicht mehr MSIL, sondern CIL. Also auf einfach Deutsch: das .NET Framework führt Dir dann die mit csc.exe oder vbc.exe erstelle Assemlby (exe bzw. dll) aus.

Warum liest Du nicht einfach mal bei Wikipedia nach, den Link habe ich Dir weiter oben gepostet. Ich tipp mir sonst hier noch die Finger wund ;)
 
Zurück
Oben