Globale Variable in C#

  • C#

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Globale Variable in C#

    Moin,

    Wie mache ich in C# eine Globale Variable, welche über das ganze Programm abrufbar ist?
    Habe nun einiges probiert... klappt leider nicht.

    Meine ca. sowas:

    C#-Quellcode

    1. public void Globalvar()
    2. {
    3. public string hallo = "HALLO";
    4. }
    5. Private Void Blub()
    6. {
    7. Messagebox.Show(hallo);
    8. }



    Gruss

    Newsletter

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „newsletter“ ()

    @DavidVB Sowas sollte man nicht machen. Variablen gehören nicht öffentlich, weil das einen Bruch des OOP-Prinzips darstellt.
    Außerdem ist das dann auch nicht programmweit.
    Was der TE sucht, ist einfach eine statische Property, wie das schon angedeutet wurde. "Funktioniert leider nicht" ist allerdings keine Problembeschreibung und damit kann auch niemand helfen.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    @newsletter Wenn Du weißt, wie das in VB.NET funktioniert, lass Dir den funktionierenden Code vom Automaten nach C# übersetzen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Nein. Das, wie Du es formuliert hast, ist eine Variable. Erst mit dem Getter und Setter wird es zu einer Property, welche dafür gedacht ist. Bei der ist ​public ja ok.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Nunja, ich habe 2 Buttons welche die gleichen Befehle (Word befüllen) ausführen. Mit Ausnahme, dass der einte das Word-Dokument auch noch druckt.

    Deshalb gebe ich einfach einer Globalen Variable den Wert 1 oder 2 mit nach Buttonklick. Ist der Wert 1 = DOC Drucken. Wert 2 = nicht drucken, aber öffnen (Visible = true;)

    Ich weiss, normalerweise macht man das übers "Click-Event" ist mir aber zu umständlich ;) Habe noch weitere Befehle, welche ich mit einer globalen Variable anstellen kann...
    Und warum ist das zu umständlich? Oo Genau dafür sind Events doch da. Damit löst man das auch architektonisch sauberer als mit irgendwelchen statischen Sachen rumzufuchteln.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    @DavidVB Lesen bildet.
    @newsletter Die weiteren Befehle kannst Du locker mit einem Enum gestalten.
    Wie wäre es mit der kompletten Problembeschreibung / Aufgabewnstellung?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Lagere dir deinen Code in eine WordDocument-Klasse aus. Der gibst du dann zwei Prozeduren: Fill() und Print() oder ähnlich. Dein Eventhandler für Button1 ruft Fill() auf und der Andere Fill() und Print() hinterher. So hast du alles fein in einem Objekt und musst nicht mit irgendwelchen Variablen kämpfen.
    Weiss nicht wie man ein Buttonklick abfragen kann.Google hilft da auch kein Schritt weiter... kann doch nicht so schwierig sein...So ziemlich was einfaches:

    C#-Quellcode

    1. Private Void Button1_Click(object sender, EventArgs e)
    2. {
    3. Blubber();
    4. }
    5. Private Void Button2_Click(object sender, EventArgs e)
    6. {
    7. Blubber();
    8. }
    9. private void Blubber()
    10. {
    11. //Word-Befüllung
    12. If (Button1 == Clicked)
    13. {
    14. //Word Drucken
    15. }
    16. else
    17. {
    18. //Word nicht drucken
    19. }


    Habe es bereits mit e.CommandArgument, Click-Event etc probiert... geht nicht

    Habe deshalb gedacht evtl. das mit einer public-Variable zu erledigen. Nach Button1-Klick = Public-Wert = 1, sonst 2.


    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „newsletter“ ()

    Und warum liest Du nicht einfach Gongers Post und baust das nach? Du machst das ja viel zu kompliziert. Du hast doch genau die passenden Eventhandler, also kannst Du sie auch so nutzen? Ansonsten gib halt Deiner Prozedur einfach einen Parameter mit. Wozu da über irgendwelche externen Properties gehen?

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    newsletter schrieb:

    VB.NET-Quellcode

    1. private void Blubber()
    Gib der Prozedur einen Parameter. Bei zwei Möglichkeiten benügt ein bool, wie bereits @DavidVB schrieb:

    C#-Quellcode

    1. private void Blubber(bool print)
    2. {
    3. if (print)
    4. {
    5. // das eine
    6. }
    7. else
    8. {
    9. // das andere
    10. }
    11. }
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!