C# Subfunktionen?

schon klar ...
nur dann klärt mich bite über meinen denkfehler auf...

btw ich mein global im sinne innerhalb der class
 
Es gibt in C# keine globalen Variablen. Und nein Datenfelder sind keine Arrays, sondern Objektvariablen, also das was du als global bezeichnest. Auch die Position, wo du etwas deklarierst, macht nichts global oder lokal. Es wird lediglich wegen der Ordnung so gehandhabt, dass alle Datenfelder am oberen Ende der Klasse stehen und nicht mittendrin verteilt. In C bestand darüberhinaus noch die Notwendigkeit, verwendete Symbole vor ihrer Verwendung zu deklarieren. Das hängt mit der Arbeitsweise des Compilers zusammen. Aus dem Grund müssen in C auch Prototypen von Funktionen und Prozeduren deklariert werden, da es sonst Probleme mit der Auflösung der Symbole geben kann.
 
Zuletzt bearbeitet:
Egal wie ichs hindreh in google ich komm mit deinen datenfeldern auf keinen grünen zeig ich finde kein buch das mir mehr über deine datenfelder verratet...

zu einem findet man informationen zum Datenfeld (Feld - "array") und zum assoziativen datenfeld jedoch wird niemals eine member variable als datenfeld bezeichnet.

die position wo etwas deklariert macht es doch wohl global oder lokal...

wenn ich eine variable innerhalb einer "METHODE" deklariere ist diese nur innerhalb dieser "methode" vorhanden und bekannt

auf variablen die auserhalb der "methode" deklariert werden( und mir ist klar das diese nicht ganz oben stehn müssen deshalb auch z.B.) muss mit z.b. Me.varname zugegriffen werden.

hast du irgendwo ne quelle wo mehr über datenfelder zu lesen ist ?
 
Siehe http://de.wikipedia.org/wiki/Klasse_(Programmierung).

"Datenfelder" werden dort als Attribute oder Eigenschaften der Klasse bezeichnet. Häufig und im Englischen normalerweise immer bezeichnet man sie auch als Felder der Klasse (fields).
Da sie außerhalb jeder Methode (= Klassenfunktion) definiert sind, erstreckt sich ihr Gültigkeitsbereich "global" über alle Methoden der Klasse, im Gegensatz zu lokalen Variablen innerhalb einer Funktion/Methode. Prinzipiell kann man sie als Variablen betrachten, die innerhalb der Klasse definiert sind ("Klassenvariablen").

Und globale Variablen gibt es auch in C#:
Code:
public static class Global
{
  public static int Variable = 0;
}

Damit hast du eine globale Variable, auf die du über Global.Variable zugreifen kannst.
 
Zuletzt bearbeitet:
Code:
public static class Global
{
  public static int Variable = 0;
}
Das ist aber eine Klassenvariable und keine Globale im eigentlichen Sinne. Natürlich ist sie global nutzbar, aber eben innerhalb der Klasse gekapselt.
 
jetzt kommen wir der sache schon näher...

aba die englischen fields mit Datenfeldern zu übersetzten ist ein irrglaube...
da Datenfelder im deutschen meines wissens nach Arrays sind...
CSharpMe - Datenfelder
assoziative Datenfelder sind z.b. Hashlisten


wie schon gesagt die eine variable die auserhalb einer funktion inerhalb einer klasse deklariert wird ist in der gesamten klasse bekannt...
sozusagen eine member variable... also genau das was ich mit global bekannter variable inerhalb der klasse gemeint hab

variablen die inerhalb eines methoden/funktions rumpfes deklariert wird ist nur innerhalb des rumpfes bekannt und somit lokal
 
Zuletzt bearbeitet:
Yuuri schrieb:
Code:
public static class Global
{
  public static int Variable = 0;
}
Das ist aber eine Klassenvariable und keine Globale im eigentlichen Sinne. Natürlich ist sie global nutzbar, aber eben innerhalb der Klasse gekapselt.

Das hängt davon ab, ob man das syntaktisch oder konzeptionell betrachtet. Auf die Syntax reduziert hast du natürlich recht.
Ergänzung ()

Xetoxyc schrieb:
sozusagen eine member variable... also genau das was ich mit global bekannter variable inerhalb der klasse gemeint hab

variablen die inerhalb eines methoden/funktions rumpfes deklariert wird ist nur innerhalb des rumpfes bekannt und somit lokal

Genau, member ist eine äquivalente Bezeichnung für field. "Globale" Gültigkeit INNERHALB einer Klasse ist nur eine unsaubere Formulierung. Gültigkeitsbereich der Klasse wäre eine korrekte Bezeichnung ("class scope").
 
jo unsaubere formulierung ist wohl der richtige begriff dafür ;P
aber wer spricht schon genau so wie er denkt ^^
 
Felder sind ein gebräuchlicher Begriff für Array, das stimmt. Trotzdem, ein Feld ist kein Datenfeld und somit ist ein Datenfeld auch kein Array. Der Begriff Datenfeld wird allerdings oft verwendet.

Xetoxyc schrieb:
die position wo etwas deklariert macht es doch wohl global oder lokal...

wenn ich eine variable innerhalb einer "METHODE" deklariere ist diese nur innerhalb dieser "methode" vorhanden und bekannt

Es ging aber darum, dass du sagtest, dass die globalen Variablen oberhalb der Main-Methode deklariert werden. Da ist es widerrum egal, wo du sie innerhalb einer Klasse definierst, solange sie keine lokalen Variablen sind. So war es gemeint, war evtl. missverständlich formuliert.

Die restlichen Unklarheiten wurden ja jetzt auch zu Genüge geklärt.
 
Zuletzt bearbeitet:
Ich glaube ein paar Leute sind hier von der eigentlich Frage schon weit entfernt :D.

Und natürlich sollte man keinen Unfug erzählen (vor allem den armen Anfängern gegenüber nicht) aber ein kleiner Vermerk hätte doch gereicht. Oder? (Niemand ist perfekt und primär geht es darum dem Fragesteller zu helfen ;))

Nun aber ein paar Grundlegende Dinge, die (zumindest habe ich sie gerade nicht gesehen) noch erwähnenswert sind.

Du benutzt bei den ganzen Messageboxen (die mich meiner Meinung nach stören würden (eine würde es je auch tuen oder manchmal sogar keine)) "Convert.ToString(...)".
Das ist in diesem Fall nicht gerade Sinnvoll, da du die Zahl ja nicht als String speichern möchtest. "arraycount.ToString()" finde ich vor allem leserlich die bessere Alternative.

Die Methode "Zeugserledigen" würde ich vielleicht nicht unbedingt public machen.

Als nächstes würde ich vorschlagen du nimmst statt einem Array tatsächlich eine "List<Uri>", dann ersparst du dir auch das ganze Umwandeln. (ist nicht viel, aber man fängt klein an beim sparen ;))

Die Liste ermöglicht dir dann auch nach einer gewissen Anzahl an Einträgen welche am Anfang rauszuhauen.

Ich wünsch dir viel Erfolg beim Programmieren ;)
 
Zurück
Oben