myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Grundlagen von C# » Was macht bei einer Instanzierung einer Klasse das Wort "static" für einen Sinn?
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

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

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
CrocodileDundee
myCSharp.de-Mitglied

Dabei seit: 23.03.2018
Beiträge: 29


CrocodileDundee ist offline

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

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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
08.03.2019 11:21 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 12.794
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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.
08.03.2019 11:23 Beiträge des Benutzers | zu Buddylist hinzufügen
CrocodileDundee
myCSharp.de-Mitglied

Dabei seit: 23.03.2018
Beiträge: 29

Themenstarter Thema begonnen von CrocodileDundee

CrocodileDundee ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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
08.03.2019 11:36 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Taipi88 Taipi88 ist männlich
myCSharp.de-Mitglied

avatar-3220.jpg


Dabei seit: 02.02.2010
Beiträge: 945
Entwicklungsumgebung: VS 2010
Herkunft: Mainz


Taipi88 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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.
08.03.2019 11:41 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
CrocodileDundee
myCSharp.de-Mitglied

Dabei seit: 23.03.2018
Beiträge: 29

Themenstarter Thema begonnen von CrocodileDundee

CrocodileDundee ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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?


mycsharp.de  Moderationshinweis von Abt (08.03.2019 14:11):

Keine Full Quotes
 [Hinweis] Wie poste ich richtig?

 
08.03.2019 13:53 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Th69
myCSharp.de-Poweruser/ Experte

avatar-2578.jpg


Dabei seit: 01.04.2008
Beiträge: 3.277
Entwicklungsumgebung: Visual Studio 2015/17


Th69 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Th69 am 08.03.2019 13:58.

08.03.2019 13:57 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
MrSparkle MrSparkle ist männlich
myCSharp.de-Team

avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 5.161
Herkunft: Leipzig


MrSparkle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hier gibt es eine ausführliche Erklärung mit Codebeispielen:  static (C# Reference)
08.03.2019 15:55 Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 4 Monate.
Der letzte Beitrag ist älter als 4 Monate.
Antwort erstellen


© Copyright 2003-2019 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 20.07.2019 09:17