Re: Variable und Instanz einer Klasse mit Gültigkeit für die gesam
- From: "Frank Dzaebel" <Post@xxxxxxxxxxxxxx>
- Date: Fri, 6 Feb 2009 17:26:32 +0100
Hallo Harald,
Das geht AFAIK nicht, Du kannst nicht in C# :
ref this Enum theEnum
in der "extension method" benutzen.
[...] Da ich in C# nicht ganz so fit bin wie Du, frage ich einfach mal sicherheitshalber zurück:
a) Kann man in C# generell einer Methode einen Enum nicht als Ref-Parameter übergeben?
Man *kann* einer (Nicht-Extension) "Methode"
einen "ref MyEnum" als Parameter angeben und der
wird auch geändert:
private void Form1_Load(object sender, EventArgs e)
{
MyEnum me = new MyEnum(); me = MyEnum.Eins;
Test(ref me); MessageBox.Show(me.ToString());
}
private void Test(ref MyEnum me)
{
me = MyEnum.Zwei;
}
enum MyEnum
{
Eins, Zwei, Drei
}
_________________
b) Kann man in C# einer static-Klasse generell einer Methode einen Enum nicht als Ref-Parameter übergeben?
Man *kann* einer statischen Methode in einer statischen
Klasse einen Enum als ref-Parameter übergeben (wie oben
ebenfalls funktional).
static class Test
{
static public void Start()
{
MyEnum me = new MyEnum(); me = MyEnum.Eins;
Testen(ref me);
MessageBox.Show(me.ToString());
}
static void Testen(ref MyEnum me)
{
me = MyEnum.Zwei;
}
enum MyEnum
{
Eins, Zwei, Drei
}
}
________________
c) Kann man in C# in einer static-Klasse einer Extension-Methode einen Enum nicht als Ref-Parameter übergeben?
Man kann das in C# *nicht* (IL-Tricks, dynamisches Emit mal ausgenommen).
Dann müsste man "ref this" etc. schreiben, das geht aber bei "Extension Methods"
in statischen Klassen in C# nicht. Im ersten Parameter einer Erweiterungsmethode
sind hier keine weiteren Modifizierer [..] zulässig.
[Compilerfehler CS1101]
http://msdn.microsoft.com/de-de/library/bb384258.aspx
Wenn Du also etwas wie folgendes hast:
public enum MyEnum
{
Eins, Zwei, Drei
}
public static class Extensions
{
public static void FromString(
this MyEnum theEnum, string fromString)
{
theEnum = (MyEnum)Enum.Parse(
theEnum.GetType(), fromString);
}
}
_________
wird beim Aufruf:
MyEnum me = new MyEnum();
me.FromString("Zwei");
MessageBox.Show(me.ToString());
"me" nicht (wie in VB.NET mit ByRef) geändert.
ciao Frank
--
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET
.
- References:
- Variable und Instanz einer Klasse mit Gültigkeit für die gesamte Klasse
- From: Hartmut Callies
- Re: Variable und Instanz einer Klasse mit Gültigkeit für die gesamte Klasse
- From: Nicolas Pavlidis
- Re: Variable und Instanz einer Klasse mit Gültigkeit für die gesamte Klasse
- From: Frank Dzaebel
- Re: Variable und Instanz einer Klasse mit Gültigkeit für die gesamte Klasse
- From: Nicolas Pavlidis
- Re: Variable und Instanz einer Klasse mit Gültigkeit für die gesam
- From: Frank Dzaebel
- Re: Variable und Instanz einer Klasse mit Gültigkeit für die gesam
- From: Harald M. Genauck
- Re: Variable und Instanz einer Klasse mit Gültigkeit für die gesam
- From: Frank Dzaebel
- Re: Variable und Instanz einer Klasse mit Gültigkeit für die gesam
- From: Harald M. Genauck
- Re: Variable und Instanz einer Klasse mit Gültigkeit für die gesam
- From: Herfried K. Wagner [MVP]
- Re: Variable und Instanz einer Klasse mit Gültigkeit für die gesam
- From: Frank Dzaebel
- Re: Variable und Instanz einer Klasse mit Gültigkeit für die gesam
- From: Herfried K. Wagner [MVP]
- Re: Variable und Instanz einer Klasse mit Gültigkeit für die gesam
- From: Frank Dzaebel
- Re: Variable und Instanz einer Klasse mit Gültigkeit für die gesam
- From: Harald M. Genauck
- Re: Variable und Instanz einer Klasse mit Gültigkeit für die gesam
- From: Frank Dzaebel
- Re: Variable und Instanz einer Klasse mit Gültigkeit für die gesam
- From: Harald M. Genauck
- Variable und Instanz einer Klasse mit Gültigkeit für die gesamte Klasse
- Prev by Date: Re: Frage zur Vererbung
- Next by Date: Re: namespace-Deklaration im XAML geht nicht
- Previous by thread: Re: Variable und Instanz einer Klasse mit Gültigkeit für die gesam
- Next by thread: Re: Variable und Instanz einer Klasse mit Gültigkeit für die gesam
- Index(es):
Relevant Pages
|
Loading