398 Stimmen

Äquivalent von typedef in C#

Gibt es ein typedef Äquivalent in C#, oder eine Möglichkeit, eine Art von ähnlichen Verhalten zu erhalten? Ich habe etwas gegoogelt, aber überall, wo ich suche, scheint negativ zu sein. Derzeit habe ich eine Situation ähnlich der folgenden:

class GenericClass<T> 
{
    public event EventHandler<EventData> MyEvent;
    public class EventData : EventArgs { /* snip */ }
    // ... snip
}

Nun muss man kein Raketenwissenschaftler sein, um herauszufinden, dass dies sehr schnell zu einer Menge Tipparbeit führen kann (Entschuldigung für das schreckliche Wortspiel), wenn man versucht, einen Handler für dieses Ereignis zu implementieren. Es würde am Ende etwas wie dieses sein:

GenericClass<int> gcInt = new GenericClass<int>;
gcInt.MyEvent += new EventHandler<GenericClass<int>.EventData>(gcInt_MyEvent);
// ...

private void gcInt_MyEvent(object sender, GenericClass<int>.EventData e)
{
    throw new NotImplementedException();
}

Aber in meinem Fall habe ich bereits einen komplexen Typ verwendet, nicht nur einen int. Es wäre schön, wenn es möglich wäre, dies ein wenig zu vereinfachen...

Bearbeiten: d.h. vielleicht typedefing die EventHandler anstelle der Notwendigkeit, es neu zu definieren, um ähnliches Verhalten zu erhalten.

1voto

Aaron Franke Punkte 2345

Die beste Alternative zu typedef die ich in C# gefunden habe, ist using . Mit diesem Code kann ich zum Beispiel die Genauigkeit von Fließkommazahlen über Compiler-Flags steuern:

#if REAL_T_IS_DOUBLE
using real_t = System.Double;
#else
using real_t = System.Single;
#endif

Leider ist es erforderlich, dass Sie dies an den Anfang der jede Datei wo Sie die real_t . Es gibt derzeit keine Möglichkeit, einen globalen Namespace-Typ in C# zu deklarieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X