Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 17968|Antwort: 0

[Quelle] C#, wo Nutzungsanalyse

[Link kopieren]
Veröffentlicht am 12.07.2016 11:35:43 | | |

Die Where-Klausel wird verwendet, um Typnebenbedingungen zu spezifizieren, die als Variablen für Typparameter in generischen Deklarationen dienen können.
1. Schnittstellenbeschränkungen.
Zum Beispiel können Sie eine generische Klasse MyGenericClass deklarieren, sodass der Typparameter T die IComparable-Schnittstelle implementieren kann<T>:

öffentliche Klasse MyGenericClass<T>, wobei T:IComparable { }

2. Basisklassen-Constraint: Gibt an, dass ein Typ die spezifizierte Klasse als Basisklasse (oder die Klasse selbst) als Typparameter für diesen generischen Typ verwenden muss.
Sobald eine solche Einschränkung verwendet wurde, muss sie vor allen anderen Einschränkungen auf den Parametertyp erscheinen.
klasse MyClassy<T, U>
wobei T : Klasse
wobei U : struct
{
}

Die 3.where-Klausel kann auch Konstruktor-Einschränkungen enthalten.
Man kann den neuen Operator verwenden, um eine Instanz eines Typparameters zu erstellen; Aber das Typargument muss dafür durch die Konstruktor-Constraint new() eingeschränkt werden. Die new()-Constraint zeigt dem Compiler, dass jede Art von Argument einen zugänglichen, parameterlosen (oder Standard-) Konstruktor haben muss. Zum Beispiel:
öffentliche Klasse MyGenericClass <T> , wo T: IComparable, new()
{
Die folgende Linie ist ohne new()-Constraint nicht möglich:
T Element = neues T();
}
Die new()-Nebenbedingung erscheint am Ende der where-Klausel.

4. Für mehrere Typparameter verwendet jeder Typparameter eine where-Klausel,
Zum Beispiel:
Schnittstelle MyI { }
Klassenwörterbuch<TKey, TVal>
wobei TKey: IComparable, IEnumerable
wobei TVal: MyI
{
öffentlicher Leerraum Add(TKey key, TVal val)
{
}
}

5. Sie können auch Nebenbedingungen an Typparameter generischer Methoden anhängen, wie zum Beispiel:

public bool MyMethod<T>(T t), wobei T : IMyInterface { }

Beachten Sie, dass die Syntax zur Beschreibung von Typparameter-Constraints sowohl für Delegierte als auch für Methoden gleich ist:

Delegate T MyDelegate<T>() wobei T : new()





Generisch Wo

Generisch: Wo kann man Typparameter qualifizieren. Es gibt mehrere Möglichkeiten.

·wobei T : struct den Typparameter einschränkt, den T von System.ValueType erben muss.

·wobei T: Klasse den Typ einschränkt. Der Parameter T muss ein Referenztyp sein, das heißt, er kann nicht von System.ValueType übernommen werden.

wobei T : new() den Typparameter einschränkt, T muss einen Standardkonstruktor haben

·wobei T : NameOfClass den Typparameter einschränkt, den T von einer Klasse erben oder eine Schnittstelle implementieren muss.

Diese Qualifikationen können kombiniert werden, wie zum Beispiel: öffentliche Klasse Punkt, wobei T : klasse, IComparabel, new()




Vorhergehend:c# NHibernate-Hilfeklasse
Nächster:c# http hört Threads mit HttpListener an
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com