Globales in C#

Gast #2229290
Lesenswert?

Hallo, habe als Ansi-C-Programmierer mal eine Frage zu C#:
1
namespace Esd.IO.Ntcan.Example
2
{
3
    class CanMonitor
4
    {
5
      static void OnCanData(ref CanMessage[] cmsgArray, ref Int32 entries)
6
        {
7
            
8
          int[, ,] PDO =            new int[800, 8, 8];
9
          int[, ,] PDO_alt =        new int[800, 8, 8];
10
          int[,]   tx_modulstatus = new int[2047, 8];

die Variablen unten werden immer bei Aufruf von OnCanData neu deklariert 
und auf Null gesetzt. Ich möchte diese aber einmalig bei Programmstart 
global initialisieren. Wie und Wo schreibe ich das hin? HAbe schon 
versucht "lose" in der Klasse mit public zu arbeiten, aber ohne 
Erfolg...
#2229307
Lesenswert?

freundlicher gast schrieb:
> Hallo, habe als Ansi-C-Programmierer mal eine Frage zu C#:

> die Variablen unten werden immer bei Aufruf von OnCanData neu deklariert
> und auf Null gesetzt. Ich möchte diese aber einmalig bei Programmstart
> global initialisieren. Wie und Wo schreibe ich das hin? HAbe schon
> versucht "lose" in der Klasse mit public zu arbeiten, aber ohne
> Erfolg...

In der Klasse mit public static arbeiten oder die Klasse mit static 
class...
Gast #2229323
Lesenswert?

freundlicher gast schrieb:
> ja sehr gut, funktioniert. Danke ;) Das public ist dann wohl das, was
> ich aus C als global kenne, aber was tut das static vor der Variablen?

also global kenn ich von C nicht - alles was ausserhalb von funktionen 
steht ist global!

Static macht das gleiche wie in C.

Und Public macht auch das gleich wie C++.

Kann sein das du einiges durcheinandern bringst?
#2229622
Lesenswert?

static bezeichnet ein objekt dass bereits beim kompilieren instanziert 
wird

bei c# gibt es eigentlich nur objekte mit methoden. so müsstest du zB 
eine funktion ohne static schlüssel instanzieren.

wenn du globale konstanten/variablen verwenden willst, empfehle ich dir 
so etwas:
1
namespace Esd.IO.Ntcan.Example
2
{
3
   public static class Globals
4
   {
5
       public static int a;
6
   }
7
}

zugriff erfolgt dann wie gewohnt ueber Globals.a

wenn es nur um die paar variablen geht, kannst du auch einfach alles als 
static deklarieren.
Gast #2229975
Lesenswert?

Macht es denn dann auch Sinn, sich die Klasse, wo die GUI drin steht als 
public static zu deklarieren?

#Develop hat mir automatisch 'partial class MainForm : Form' erstellt, 
dann ist das wahrscheinlich auch so üblich habe ich mir gedacht.

Ich kann dann aber nciht von aussen drauf zugreifen. Wie sieht 
normalerweise ein Programm mit GUI aus, um auf die Elemente zuzugreifen. 
Oder soll man wirklich nur aus der Forms-Klasse zugreifen?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren