Was ist der Unterschied zwischen public und private in C# (Unity)?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Moin,

nein - generell sind die Zugriffsmodifizierer, in dem Falle public und private, dazu da, Methoden, Klassen und Variablen innerhalb der Klasse abzugrenzen oder freizugeben.

Private heißt, dass du darauf nur innerhalb der Klasse darauf zugreifen kannst, in der du dich befindest.

In a Nutshell:

static public Class Test
{
  private static int i = 0;
}
public Class Test2
{
  int z = Test.i; //Funktioniert nicht, da i private außerhalb der Klasse ist.
}

Umgekehrt:

static public Class Test
{
  public static int i = 0;
}
public Class Test2
{
  int z = Test.i; //Funktioniert. i ist public!
}

(Die Klassen in den Beispielen sind eben nur Beispiele)

Was dein Lehrer mit:

wäre auch was für die Spieler sichtbar ist.

Gemeint haben könnte, ist, dass wenn du in Unity Attribute anlegst, Public und Private entscheiden, ob die Variable von Unity aus verändert werden kann. Dort, wo man die Datei reinschiebt erscheint dann ein anpassbarer Wert, wenn dieser public ist.

Dann hat er es aber schlecht erklärt oder du nicht verstanden. ^^

LG

Woher ich das weiß:Berufserfahrung – 💻 Zertifizierter Sr. Cloud Engineer im IT-Consulting

Fabian261110  04.01.2023, 09:51
ob die Variable von Unity aus verändert werden kann

Stimmt nicht, da eine private Variable über [ShowInInspector] trotzdem sichtbar gemacht werden kann. Grundlegen ist sie mit public im Inspector sichtbar, mit private nicht, aber es kann mit [ShowInInspector] oder [HideInInspector] verändert werden, ohne den Zugriff zu verändern.

0
Dultus, UserMod Light   04.01.2023, 10:40
@Fabian261110

In meiner Antwort gehe ich davon aus, dass Decorator nicht verwendet werden und die Antwort bezog sich auf die Frage, nicht um das drum herum.

0
Lehrer [...] meinte der Unterschied wäre auch was für die Spieler sichtbar

Dann habt Ihr entweder von verschiedenen Dingen gesprochen, oder der Lehrer hat keine Ahnung.

Der Zugriffsmodifizierer regelt, welcher Code den Member benutzen darf.
Also ob eine normale Klasse aus anderen Projekten genutzt werden darf (public) oder eben nicht. Oder ob die Inhalte einer Klasse aus anderen Projekten (public), nur im eigenen Projekt (internal), in Ableitungen (protected) oder nirgendwo sonst (private) genutzt werden darf.

Und noch die anderen Variationen.

Das hat aber genau 0 mit Unity zu tun, sondern allgemein C# und .NET, es hat also auch keinerlei Auswirkungen für den Spieler.
Wenn irgendwas etwas nutzt, was es nicht darf, dann kompiliert das Programm nicht und Punkt.

Woher ich das weiß:Berufserfahrung – C#.NET Senior Softwareentwickler

Fabian261110  04.01.2023, 09:52

Was der Lehrer vermutlich meint, ist ob die Variable im Inspector sichtbar ist (--> Bezog auf Unity), auch wenn man das mit zB [ShowInInspector] ändern kann.

0

Nein dein Lehrer labert Blödsinn.

In c# regelt das woraus der Code aufgerufen werden kann.

Ich meine, dass in Unity die public Eigenschaften dann auch im Editor Einstellbar sind, aber private nicht. So hab ich es dunkel in Erinnerung. Aber das betrifft nicht den Spieler sondern den Entwickler/game designer.

Woher ich das weiß:Berufserfahrung – Software Entwickler / Devops

Fabian261110  04.01.2023, 09:53
Nein dein Lehrer labert Blödsinn.

Was der Lehrer vermutlich meint, ist ob die Variable im Inspector sichtbar ist (--> Bezog auf Unity), auch wenn man das mit zB [ShowInInspector] ändern kann.

0
BeamerBen  04.01.2023, 10:22
@Fabian261110

das was im letzten Absatz steht eben, ist aber trotzdem Blödsinn was der Lehrer scheinbar gesagt hat (oder zumindest wie es der Fragesteller verstanden hat).

0