Entwickler-Ecke

Alle Sprachen - Alle Plattformen - Unterschied zwischen internal und private


Delete - Mi 13.09.17 11:45
Titel: Unterschied zwischen internal und private
- Nachträglich durch die Entwickler-Ecke gelöscht -


jaenicke - Mi 13.09.17 12:58

internal beschränkt den Zugriff auf die gleiche Assembly. Das könnte man in Delphi höchstens mit den Packages vergleichen, wenn man diese denn zur Laufzeit verwendet, aber dafür gibt es kein vergleichbares Konzept. Deshalb würde hier public am ehesten dem entsprechen. Denn ohne Laufzeitpackages gibt es ja nur eine Exe bzw. DLL, die auf diese Klassen zugreifen kann.


Delete - Mi 13.09.17 13:06

- Nachträglich durch die Entwickler-Ecke gelöscht -


Ralf Jansen - Mi 13.09.17 13:28

Weil es im allgemeinen näher an internal ist als private?
Im speziellen Fall, also je nachdem was du erreichen willst was nur ähnlich der verfügbaren Sichtbarkeiten ist, wäre die Antwort natürlich "kommt drauf an".

Zitat:
Wie würde sich das nun auswirken, wenn die innere Klasse in C# private gesetzt werden würde? Gäbe es da einen nennenswerten Unterschied zum Modifier internal? Und wenn ja, welchen?


Public Member einer privaten inner class sind nur für die umgebende Klasse erreichbar. Public Member einer internal inner class sind für alle Klassen in der Assembly erreichbar.


Delete - Mi 13.09.17 13:52

- Nachträglich durch die Entwickler-Ecke gelöscht -


Ralf Jansen - Mi 13.09.17 14:40

Modifier = private

Das ist eigentlich ein ziemlich übliches Factory/Extension Pattern.
Konkretes Beispiel das ich kürzlich hatte :

In Microsoft.Owin kann man ein eigenes Filesystem implementieren. Dazu möchte Owin das man ein IFileSystem Interface implementiert und über dieses IFileSystem kommt man dann an IFileInfo Klassen zur Beschreibung der Files des Filesystems. In der Implementierung ist dann ganz natürlich die konkrete IFileInfo Implementierung eine private Klasse der konkreten IFileSystem Implementierung.


Delete - Mi 13.09.17 14:58

- Nachträglich durch die Entwickler-Ecke gelöscht -


doublecross - Mi 13.09.17 16:23

Hallo,

user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
Dann ist mein Vorhaben garnicht so verkehrt. Was internal angeht, muss ich mir nochmal anschauen. Gut dass ich nachgefragt habe.


stelle dir vor dein Programm würde nicht alleine laufen, sondern es wäre eine Bibliothek (also quasi DLL statt EXE). Dann würdest du eine internal Klasse nur in deiner Bilbiothek nutzen können (für alle (internen) Objekte aus deiner Bibliothe wäre sie public). Definierst du die Klasse hingegen als public dann kann sie nicht nur von den Objekten aus deiner Bibliothek verwendet werden, sondern auch von denen aus dem Programm, dass wiederum deine Bibliothek verwendet. Sie wäre also "Programmübergreifend" public.


Delete - Mi 13.09.17 17:16

- Nachträglich durch die Entwickler-Ecke gelöscht -