Ich bin neu in C# - das ist fast mein erstes Programm. Ich versuche, einige statische statische Variablen und Konstanten zu erstellen, die überall im Programm verwendet werden können. Der falsche Weg, den ich versucht habe, ist, sie in einer separaten Klasse im selben Namespace zu deklarieren, aber sie sind für das Hauptprogramm nicht im Zusammenhang. Es ist eine WPF-Anwendung. Der Code sieht wie folgt aus:Nicht scoping statische vars richtig in C#
namespace testXyz
{
class PublicVars
{
public const int BuffOneLength = 10000;
public static int[] Buff1 = new int[BuffOneLength];
public const int BuffTwoLength = 2500;
public static int[] Buff2 = new int[BuffTwoLength];
private void fillBuff1()
{
Buff1[0] = 8;
Buff1[1] = 3;
//etc
}
private void fillBuff2()
{
Buff2[0] = 5;
Buff2[1] = 7;
//etc
}
}
}
Zweite Datei:
namespace testXyz
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
public static int isInContext = 0;
int jjj = 0, mmm = 0;
private void doSomething()
{
isInContext = 5; // this compiles
if (jjj < BuffOneLength) // "the name 'BuffOneLength' does not exist in the current context"
{
mmm = Buff2[0]; // "the name 'Buff2' does not exist in the current context"
}
}
}
}
Meine eigentliche Programm ist viel mehr natürlich. Ich habe die obige WPF-Anwendung genau wie gezeigt erstellt, um dieses Problem zu testen, und ich habe diese Fehler, die auch im realen Programm auftreten. Ich möchte wirklich nicht die Arrays im Hauptprogramm füllen, da sie sehr lang sind und es würde viel Scrollen bedeuten. Ich möchte auch einen Ort haben, an dem ich bestimmte öffentliche statische Variablen deklarieren kann. Was ist der richtige Weg?
ich, warum nicht bekommen sein werden Sie den gleichen Namensraum deklarieren zweimal? – dcg
Die 2 Blöcke befinden sich in 2 verschiedenen CS-Dateien im Projekt. Visual Studio generiert die Namespacedeklarationen. Ich habe sie im obigen Beispiel angehängt. – Moonling
Ok! Ich habe es nirgendwo gelesen, also nahm ich an, dass es in derselben Datei war. – dcg