Hallo, ich bins nochma.
leider habe ich festgestellt, dass mein c# schon wieder rum meckert.
Um Variablen Global zu deklarieren wurde mir dieser code hier gegeben:
public static class Globalvariables{
public static var1 = "value1";
public static var2 = "value2";
}
Nur bei diesem Code meckert er rum:
Der Modifizierer 'static' ist für dieses Element nicht gültig
ich bin am verzweifeln.
public class GlobaleVariablen
{
public string var1 = "value1";
public string var2 = "value2";
}
public class myClass
{
GlobaleVariablen x = new GlobaleVariablen();
x.var1 = "Hallo";
}
Was Microsoft zu static sagt kannst du hier nachlesen
http://msdn.microsoft.com/library/deu/default.asp?url=/library/DEU/csref/html/vclrfStaticPG.asp
schau nach den Code in deine erste post noch mal, die Strings habe ich kurz danach korrigiert:
public static string var1 = "value1";
Eine Komplette Beispiel
using System;
using System.Collections;
namespace GlobalStuff{
public class test
{
public static string var1 = "value1";
public static string var2 = "value2";
}
public class MyClass
{
public static void Main()
{
Console.WriteLine(test.var1);
RL();
}
#region Helper methods
private static void WL(object text, params object[] args)
{
Console.WriteLine(text.ToString(), args);
}
private static void RL()
{
Console.ReadLine();
}
private static void Break()
{
System.Diagnostics.Debugger.Break();
}
#endregion
}
}
Hallo .unreal,
dass es einen Unterschied gibt, ist schon klar, aber so groß ist der letztendlich gar nicht. Jedenfalls ist der Unsinn, den man mit statischen Variablen treiben kann, genauso groß wie bei globalen Variablen. Deshalb sollte man sie vermeiden. Erst recht, wenn man vor hatte, sie als Ersatz für gloable Variablen zu benutzen.
herbivore
Für manche Konstruktionen sind statische Variablen unverzichtbar. Zum Beispiel beim Singleton Pattern.
Ich stimme aber herbivore zu: Nur einsetzen, wenns wirklich nötig ist.
Statische Member kann man m.E. ohne Gefahr einsetzen, wenn
Für das Singleton ist das z.B. gegeben.
Für das obige Beispiel gilt das aber offenbar nicht. Insofern ist Herbis Warnung angezeigt.
Original von herbivore
Hallo .unreal,dass es einen Unterschied gibt, ist schon klar, aber so groß ist der letztendlich gar nicht. Jedenfalls ist der Unsinn, den man mit statischen Variablen treiben kann, genauso groß wie bei globalen Variablen. Deshalb sollte man sie vermeiden. Erst recht, wenn man vor hatte, sie als Ersatz für gloable Variablen zu benutzen.
herbivore
es ging mir ja auch nicht darum, jemandem auf die finger zu klopfen, sondern aufzuklären! es ist erstaunlich wie viele solche details gar nicht wissen 🙁