| 

.NET C# Java Javascript Exception

6
Ich habe bislang in VB programmiert und steige nun langsam auf C# um. Bei der portierung einer VB-Funktion musste ich feststellen, dass C# keine statischen variablen kennt, die Werte zwischen Prozedur- und Funktionsaufrufen beibehalten. Was ist der Grund dafür und wie lassen sich statische Variablenm ersetzen?
03.02.2012
RattyUK 31 1 2
3 Antworten
4
public static int IchBinEineStatischeVariable = 0;


Oder suchst du was anderes?
03.02.2012
Floyd 14,6k 3 9
Floyd 14,6k 3 9
1
Deine Antwort halte ich für richtig, ich bin aber eben stutzig geworden durch seiner Aussage "dass C# keine statischen variablen kennt, die Werte zwischen Prozedur- und Funktionsaufrufen beibehalten". Vllt erwartet OP soetwas wie Singletons oder Hilfsstrukturen (structs,POCOs,...) die zur Laufzeit Werte unabhängig von Klasseninstanziierungen halten...
Vllt antwortet der OP nochmal oder markiert Deine Antwort als "Antwort".
mplogas 03.02.2012
Ja das hat mich auch etwas stutzig gemacht. Aber vielleicht hatte er es auch einfach nicht gefunden. Mal schauen wie er auf die Antwort reagiert.
Floyd 03.02.2012
2
als Ersatz für statische Variablen kommen wohl nur private variablen infrage

'Statische Variable in VB:
Public Class Class1
Friend Function TuIrgendwas() As Int32
Static X As Int32
X += 1
Return X
End Function
End Class

entspricht:
Public Class Class2
Private _X As Int32
Friend Function TuIrgendwas() As Int32
_X += 1
Return _X
End Function
End Class

in C#
public class Class2
{
private Int32 _X;
internal Int32 TuIrgendwas()
{
_X += 1;
return _X;
}
}

Es sei denn, die Funktion befindet sich in einem Modul oder in einer Shared Function.
Dann passt auch die Antwort von Floyd :-)

Public Module Module1
Friend Function TuIrgendwas() As Int32
Static X As Int32
X += 1
Return X
End Function
End Module

public static class Module1
{
private static Int32 _X;
static internal Int32 TuIrgendwas()
{
_X += 1;
return _X;
}
}

Class Class3
Friend Shared Function TuIrgendwas() As Int32
Static X As Int32
X += 1
Return X
End Function
End Class

class Class3
{
private static Int32 _X;
static internal Int32 TuIrgendwas()
{
_X += 1;
return _X;
}
}
03.02.2012
jb51 51 2
0
Ich nehme an, daß jb mit seiner Antwort richtig liegt. Ein C# static ließe sich einfach nachschlagen, nicht jedoch eine local static deklaration. (Andere sind wohl ähnlich begeistert, daß es sowas überhaupt gibt ;) )

In C# gibt's jedenfalls nur klassenweite static variable, aber keine, die nur in 1 Funktion sichtbar sind.
04.02.2012
devio 302 3

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH