C# Frage zu Variable in einer Funktion
- Ersteller eightcore
- Erstellt am
SubNatural
Commander
- Registriert
- Jan. 2009
- Beiträge
- 2.870
Muss man dazu nicht eine globale Variable anlegen?
Kenn mich mit C# nicht so gut aus(eher Java) aber ich meine das wäre so gewesen.
Link für Hilfe: http://home.fhtw-berlin.de/~junghans/cref/SYNTAX/glo_int_vars.html
Oder einfach per Parameter übergeben. Wie in Java
Kenn mich mit C# nicht so gut aus(eher Java) aber ich meine das wäre so gewesen.
Link für Hilfe: http://home.fhtw-berlin.de/~junghans/cref/SYNTAX/glo_int_vars.html
Oder einfach per Parameter übergeben. Wie in Java
@eightcore: Zurück zu den Grundlagen.
Gar nicht kannst du diese Funktion aufrufen außerhalb der Funktion, da sie nur im Scope der Funktion zugreifbar. Und das du nichts im Netz findest ist eine schlechte Ausrede dafür das du nicht gründlich gesucht hast.
Willst du den Wert der Variable später weiterbenutzen, gib einfach die Variable(je nach dem was es für ein Typ ist) von der Funktion zurück.
Gar nicht kannst du diese Funktion aufrufen außerhalb der Funktion, da sie nur im Scope der Funktion zugreifbar. Und das du nichts im Netz findest ist eine schlechte Ausrede dafür das du nicht gründlich gesucht hast.
Willst du den Wert der Variable später weiterbenutzen, gib einfach die Variable(je nach dem was es für ein Typ ist) von der Funktion zurück.
L
ltkrass
Gast
Soweit ich weis existiert die Variable in deinem Fall nur innerhalb der Funktion. Du könntest die Variable via
zurück geben, so wärs z. B. in Java möglich.
Code:
[B]return[/B] var;
Am besten als Rückgabewert an den caller senden 
Von http://csharp.net-tutorials.com/basics/functions/
Globale Variablen würde ich vermeiden.

PHP:
public int AddNumbers(int number1, int number2)
{
int result = number1 + number2;
return result;
}
Von http://csharp.net-tutorials.com/basics/functions/
Globale Variablen würde ich vermeiden.
Zuletzt bearbeitet:
(dict ;))
pizza4ever
Lt. Commander
- Registriert
- Apr. 2009
- Beiträge
- 1.711
gibts überhaupt globale Variablen in C#?
http://www.google.de/search?hl=de&c...cial&q=c#+globale+variable&aq=f&aqi=&aql=&oq=
"Das Gegenteil von lokalen sind globale Variablen, die es in C# aber nicht gibt. "
Scheint es niht bzw. nur über Umwege zu geben
http://www.google.de/search?hl=de&c...cial&q=c#+globale+variable&aq=f&aqi=&aql=&oq=
"Das Gegenteil von lokalen sind globale Variablen, die es in C# aber nicht gibt. "
Scheint es niht bzw. nur über Umwege zu geben
BlooDFreeZe
Lt. Commander
- Registriert
- Juli 2006
- Beiträge
- 1.160
Also eine in der Funktion erstellte Variable kannst du nicht abrufen. Du kannst sie aber:
- "global" definieren (wie schon erwähnt)
- den wert der Variable mit return zurückgeben http://msdn.microsoft.com/de-de/library/1h3swy84(v=vs.80).aspx
- den Wert mit out zurückgeben: http://msdn.microsoft.com/en-us/library/t3c3bfhx(v=vs.80).aspx
@pizza ja, es gibt keine "echten" globalen variablen, man kann sich halt höchstens, wie in dem ersten google ergebnis, eine Klasse mit statischen Variablen und Methoden anlegen, von der keine Instanz erzeugt werden darf.
- "global" definieren (wie schon erwähnt)
- den wert der Variable mit return zurückgeben http://msdn.microsoft.com/de-de/library/1h3swy84(v=vs.80).aspx
- den Wert mit out zurückgeben: http://msdn.microsoft.com/en-us/library/t3c3bfhx(v=vs.80).aspx
@pizza ja, es gibt keine "echten" globalen variablen, man kann sich halt höchstens, wie in dem ersten google ergebnis, eine Klasse mit statischen Variablen und Methoden anlegen, von der keine Instanz erzeugt werden darf.
Zuletzt bearbeitet:
Geht auch nicht. Wenn Du den Wert eine Variable außerhalb einer Funtion haben willst, dann mußt du ihn zurückgeben.
public int Fkt()
{
int Var = 0;
//berechnung mit Var
return Var;
}
oder Du übergibst sie als out Parameter oder ref, wenn ihr wert vorher wichtig ist.
public int Fkt()
{
int Var = 0;
//berechnung mit Var
return Var;
}
oder Du übergibst sie als out Parameter oder ref, wenn ihr wert vorher wichtig ist.
BlooDFreeZe
Lt. Commander
- Registriert
- Juli 2006
- Beiträge
- 1.160
Ich denk mal es geht ja letzenendes darum wieder Daten von der Funktion zurück zu bekommen =) Das er keine Variable die er in der Funktion definiert hat rausholen kann dürfte inzwischen klar sein.
roker002
Commander
- Registriert
- Dez. 2007
- Beiträge
- 2.075
Seit wann gibts is in der OO Sprache eine Globale Variable?
Du kannst vielleicht DEF deklarieren...
Wenn man eine Globale Variable will, dann ist man bei OO Sprachen wie Java/C# falsch. Eightcore, vielleicht solltest du nachlesen was der Sinn der OO Sprachen ist. Man kapselt die Objekte, damit das mit dem globalen mist nichts falsches passieren kann. Wenn du global willst, schreibe das in eine Datei uns lese jedes mal einfach aus.
Was du eventuell verwenden kannst ist
Ich tippe ehe auf ref, wobei bei Objekten immer ref genutzt wird (hierbei REF optional, da Objekte referenziert sind, Zeiger im Speicherbereich) und bei den Structs expliziert angegeben werden muss.
Du kannst vielleicht DEF deklarieren...
Wenn man eine Globale Variable will, dann ist man bei OO Sprachen wie Java/C# falsch. Eightcore, vielleicht solltest du nachlesen was der Sinn der OO Sprachen ist. Man kapselt die Objekte, damit das mit dem globalen mist nichts falsches passieren kann. Wenn du global willst, schreibe das in eine Datei uns lese jedes mal einfach aus.
Was du eventuell verwenden kannst ist
- ref, wenn du den Wert der Variable weitergeben willst.
- out, hier musst die die Variable zuerst initialisieren, wenn du mit out angibst. Es ist aber ähnlich wie return.
Ich tippe ehe auf ref, wobei bei Objekten immer ref genutzt wird (hierbei REF optional, da Objekte referenziert sind, Zeiger im Speicherbereich) und bei den Structs expliziert angegeben werden muss.
Seit wann gibts is in der OO Sprache eine Globale Variable?
Mal davon abgesehen, dass man globale Variablen möglichst vermeiden sollte, gibt es in den meisten "OO Sprachen" globale Variablen.
Auch in C# kann man mit einer static Class und einer Klassenvariable in dieser eine globale Variable erzeugen:
Code:
static class Global
{
private string variable = "";
public static string Variable
{
get { return variable; }
set { variable = value; }
}
}
Verwendung:
Code:
Global.Variable = "so gehts schon";
string testVar = Global.Variable;
Zuletzt bearbeitet:
(Verwendung hinzugefügt)
roker002
Commander
- Registriert
- Dez. 2007
- Beiträge
- 2.075
@dacleric
Du hast keine globale Variable. Es ist lediglich nur ein statischer verweis, was für alle anderen Klassen sichtbar ist.
Ich denke, was eightcore will ist eine richtig globale Variable wie in C oder PHP, wo alle drauf zugreifen können ohne die Klasse in der es gekapselt ist aufzurufen.
Sobald du aber Multithreading orientiert programmierst solltest du auch die statics vermeiden, oder die Klasse locken, damit kein Mist passiert. Klar static ist MT safe, aber sobald da mehrere Threads auf die static zugreifen, wirds nicht mehr lustig!
Du hast keine globale Variable. Es ist lediglich nur ein statischer verweis, was für alle anderen Klassen sichtbar ist.
Ich denke, was eightcore will ist eine richtig globale Variable wie in C oder PHP, wo alle drauf zugreifen können ohne die Klasse in der es gekapselt ist aufzurufen.
Sobald du aber Multithreading orientiert programmierst solltest du auch die statics vermeiden, oder die Klasse locken, damit kein Mist passiert. Klar static ist MT safe, aber sobald da mehrere Threads auf die static zugreifen, wirds nicht mehr lustig!
Ähnliche Themen
- Antworten
- 11
- Aufrufe
- 795
- Antworten
- 5
- Aufrufe
- 1.121
- Antworten
- 7
- Aufrufe
- 1.133
- Antworten
- 28
- Aufrufe
- 1.314