Laden...

Was macht bei einer Instanzierung einer Klasse das Wort "static" für einen Sinn?

Erstellt von CrocodileDundee vor 5 Jahren Letzter Beitrag vor 5 Jahren 1.531 Views
C
CrocodileDundee Themenstarter:in
51 Beiträge seit 2018
vor 5 Jahren
Was macht bei einer Instanzierung einer Klasse das Wort "static" für einen Sinn?

Hallo zusammen,
ich bin in einem Quellcode auf die folgende Instanzierung gestoßen
(die Bezeichner habe ich geändert):


private static Auto Kadett = new Auto();

Dabei ist Auto keine statische Klasse.

Was macht bei dieser Instanzierung das Wort "static" für einen Sinn?

Dank und Gruß
Frank

16.806 Beiträge seit 2008
vor 5 Jahren

Das heisst ja nur, dass die Eigenschaft "Kadett" statisch ist; hat mit der Klassendefinition "Auto" hier nichts zutun.

Ob das hier überhaupt sinn macht, das ist nicht erkennbar.

C
CrocodileDundee Themenstarter:in
51 Beiträge seit 2018
vor 5 Jahren

Hallo zusammen,
sorry, vielleicht nochmal etwas ausführlicher:


namespace Tierheim
{

    // Klasse Hund
    public class Hund
    {
        public string Rasse;
    }


    // Klasse Hundekatalog
    public class Hundekatalog
    {
        private static Hund Waldi = new Hund();
    }

}

Was verursacht hier die Instanzierung mit "static" ?

Gruß
Frank

1.029 Beiträge seit 2010
vor 5 Jahren

Hi,

das bedeutet im Prinzip, dass in jeder Instanz der Klasse in der diese Definition steht beim Zugriff auf die Eigenschaft "Kadett" die gleiche Referenz verwendet wird.

Wenn du also 2 Instanzen der Klasse hast und in einer der Instanzen an der Variable "Kadett" rumspielst - ändert sich das für alle anderen Klassen ebenfalls, weil überall dieselbe Instanz von Kadett verwendet wird.

LG

PS: Das Wort "überall" ist bei static nicht immer wirklich überall... Das nur als Vorwarnung.

C
CrocodileDundee Themenstarter:in
51 Beiträge seit 2018
vor 5 Jahren

Wenn sich die Eigenschaften in allen Instanzen gleichermaßen, dann sind also
in allen Instanzen die Eigenschaften immer gleich?
Aber was ist dann der Unterschied zu einer statischen Klasse?

Hinweis von Abt vor 5 Jahren

Keine Full Quotes
[Hinweis] Wie poste ich richtig?

4.931 Beiträge seit 2008
vor 5 Jahren

Bei einer statischen Klasse müssen zwingend alle Member (Methoden, Eigenschaften, Membervariablen) statisch sein und man kann keine Klasseninstanz (per new) erzeugen.
Bei einer nicht-statischen Klasse (wie in deinem Fall) sind eben nur eine (oder mehrere) Member statisch, aber nicht alle, d.h. es können unterschiedliche Instanzen (Objekte) erzeugt werden.

5.657 Beiträge seit 2006
vor 5 Jahren

Hier gibt es eine ausführliche Erklärung mit Codebeispielen: static (C# Reference)

Weeks of programming can save you hours of planning