


Detaillierte grafische und textliche Einführung in generische C#-Einschränkungen
In diesem Artikel werden die Einschränkungen von C#-Generika ausführlich vorgestellt: Einschränkungen des Referenztyps; Einschränkungen des Konstruktortyps; Es hat einen sehr guten Referenzwert, schauen wir es uns mit dem folgenden Editor an
1 Referenztypbeschränkungen
struct RefSample< T> wobei T:class Der Referenztyp verwendet Class, um Einschränkungen darzustellen, und andere Referenztypen sind spezifische Einschränkungen.
bedeutet, dass die Einschränkung eine Klasse (Referenztyp) sein muss und kein Werttyp (int, char, datatime, struct) sein kann. Sie kann eine Schnittstelle sein
Unterscheidung, das Array ist ein Referenztyp, da Sie beim Definieren eines Arrays ein Objekt mit new erstellen müssen.
Obwohl es als RefSample
2 Werttypbeschränkungen
class ValSample
ein Referenztyp ist, da int, char und andere Typen alle struct
sindValSample
3. Konstruktortypbeschränkung
public T CreateInstance<T>() where T:new() { return new T(); }
Der angegebene Typ T muss einen Konstruktor haben, CreateInstance
4. Einschränkungen für Konvertierungstypen
Eine Einschränkung ermöglicht die Angabe eines anderen Typs. Das Typargument muss implizit durch Konsistenz, Referenz oder Boxing-Konvertierung in diesen Typ konvertierbar sein . Sie können auch angeben, dass ein Typargument in ein anderes Typargument konvertierbar sein muss – dies wird als Typparametereinschränkung bezeichnet.
Verstandene Bedeutung: austauschbar, das heißt, jeder Typ, den wir durch Boxen oder erzwungenen Typ in den Zieltyp konvertieren können, kann zur Übergabe von Typparametern verwendet werden.
Klasse Sample
gilt: Sample
struct Sample
Analyse: Warum kann SqlConnection, aber nicht StringBuilder? Sie sind alle Referenztypen
1. SqlConnection implementiert die IDisposable-Schnittstelle, sodass sie kovariant sein kann
2. StringBuilder implementiert nur die ISerializable-Schnittstelle und kann nicht in IDisposable konvertiert werden
class Sample
typeof(IComparable
Klassenbeispiel
Klasse Sample
Zusammenfassung: Es hängt davon ab, ob die eingehenden Klassenparameter konvertiert werden können und ob die angegebenen Parameter und die eingehenden Klassenparameter dieselbe Schnittstelle implementieren. Wenn ja, ist dies in Ordnung, andernfalls ist dies nicht möglich.
darf nicht Folgendes sein: System.Object, System.Enum, System.ValueType, System.Delegate, Struktur oder versiegelte Klasse (String)
5. Kombinationseinschränkungen
Es gibt mehrere Einschränkungen für Typparameter. Hinweis: Es kann nur ein Typ sein, und Werttypen und Referenztypen können nicht vorhanden sein Gleichzeitig ist es nicht erforderlich, dass ein Typ sowohl ein Referenztyp als auch ein Werttyp ist.Da jeder Werttyp eine konstruktorlose Funktion hat, kann es danach keine Konstruktoreinschränkungen mehr geben
Gültig:
class Sample
class Sample
Ungültig:
class Sample
class Sample
class Sample
class Sample
Syntax Fehler
Da es diese Version auch online gibtGültig
Ich verstehe nicht:Klasse Beispiel
class Sample
Ich hoffe, Sie können mich korrigieren
Das Obige ist C#-Generika Der Inhalt der Einschränkungen wird ausführlich mit Bildern und Texten vorgestellt. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Leitfaden zu Active Directory mit C#. Hier besprechen wir die Einführung und die Funktionsweise von Active Directory in C# sowie die Syntax und das Beispiel.

Leitfaden zum Zufallszahlengenerator in C#. Hier besprechen wir die Funktionsweise des Zufallszahlengenerators, das Konzept von Pseudozufallszahlen und sicheren Zahlen.

Leitfaden zur C#-Serialisierung. Hier besprechen wir die Einführung, die Schritte des C#-Serialisierungsobjekts, die Funktionsweise bzw. das Beispiel.

Leitfaden zur C#-Datenrasteransicht. Hier diskutieren wir die Beispiele, wie eine Datenrasteransicht aus der SQL-Datenbank oder einer Excel-Datei geladen und exportiert werden kann.

Leitfaden zu Mustern in C#. Hier besprechen wir die Einführung und die drei wichtigsten Arten von Mustern in C# zusammen mit ihren Beispielen und der Code-Implementierung.

Leitfaden zu Primzahlen in C#. Hier besprechen wir die Einführung und Beispiele von Primzahlen in C# sowie die Codeimplementierung.

Leitfaden zur Fakultät in C#. Hier diskutieren wir die Einführung in die Fakultät in C# zusammen mit verschiedenen Beispielen und Code-Implementierungen.

Der Unterschied zwischen Multithreading und Asynchron besteht darin, dass Multithreading gleichzeitig mehrere Threads ausführt, während asynchron Operationen ausführt, ohne den aktuellen Thread zu blockieren. Multithreading wird für rechenintensive Aufgaben verwendet, während asynchron für die Benutzerinteraktion verwendet wird. Der Vorteil des Multi-Threading besteht darin, die Rechenleistung zu verbessern, während der Vorteil von Asynchron nicht darin besteht, UI-Threads zu blockieren. Die Auswahl von Multithreading oder Asynchron ist von der Art der Aufgabe abhängt: Berechnungsintensive Aufgaben verwenden Multithreading, Aufgaben, die mit externen Ressourcen interagieren und die UI-Reaktionsfähigkeit asynchron verwenden müssen.
