Laden...

schon wieder Probleme!!!

Erstellt von Xivender vor 18 Jahren Letzter Beitrag vor 18 Jahren 1.894 Views
X
Xivender Themenstarter:in
3 Beiträge seit 2005
vor 18 Jahren
schon wieder Probleme!!!

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.

B
80 Beiträge seit 2005
vor 18 Jahren

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

V
16 Beiträge seit 2005
vor 18 Jahren

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
	}
}
49.485 Beiträge seit 2005
vor 18 Jahren

Hallo zusammen,

globale Variablen stehen für schlechtes Design und sollten vermieden werden. Siehe Variablen .

herbivore

PS: Xivender, bitte verwende den ersten Thread, wenn du Nachfragen zum selben Thema hast.

563 Beiträge seit 2004
vor 18 Jahren

global != statisch

49.485 Beiträge seit 2005
vor 18 Jahren

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

3.728 Beiträge seit 2005
vor 18 Jahren
Statisches

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.

S
8.746 Beiträge seit 2005
vor 18 Jahren

Statische Member kann man m.E. ohne Gefahr einsetzen, wenn

  1. sie von aussen nur lesend via Property zugegriffen werden können
  2. sie innerhalb der Klasse nicht zum Datenaustausch (Parameterersatz) zwischen Methoden eingesetzt werden.

Für das Singleton ist das z.B. gegeben.

Für das obige Beispiel gilt das aber offenbar nicht. Insofern ist Herbis Warnung angezeigt.

563 Beiträge seit 2004
vor 18 Jahren

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 🙁