myCSharp.de - DIE C# und .NET Community (https://www.mycsharp.de/wbb2/index.php)
- Entwicklung (https://www.mycsharp.de/wbb2/board.php?boardid=3)
-- Grundlagen von C# (https://www.mycsharp.de/wbb2/board.php?boardid=88)
--- Was macht bei einer Instanzierung einer Klasse das Wort "static" für einen Sinn? (https://www.mycsharp.de/wbb2/thread.php?threadid=121656)


Geschrieben von CrocodileDundee am 08.03.2019 um 11:21:
  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):

C#-Code:
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


Geschrieben von Abt am 08.03.2019 um 11:23:
 
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.


Geschrieben von CrocodileDundee am 08.03.2019 um 11:36:
 
Hallo zusammen,
sorry, vielleicht nochmal etwas ausführlicher:

C#-Code:
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


Geschrieben von Taipi88 am 08.03.2019 um 11:41:
 
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.


Geschrieben von CrocodileDundee am 08.03.2019 um 13:53:
 
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?


Geschrieben von Th69 am 08.03.2019 um 13:57:
 
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.


Geschrieben von MrSparkle am 08.03.2019 um 15:55:
 
Hier gibt es eine ausführliche Erklärung mit Codebeispielen:  static (C# Reference)


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 01.04.2020 07:17