Generika sind eine Form des parametrischen Polymorphismus, der in einer Reihe von Sprachen zu finden ist, darunter .NET-Sprachen, Java, Swift und Rust.
Gibt es eine übliche Möglichkeit, ein einzelnes Element vom Typ Tan eine Methode zu übergeben, die einen IEnumerable<T>Parameter erwartet ? Die Sprache ist C #, Framework Version 2.0. Derzeit verwende ich eine Hilfsmethode (es ist .Net 2.0, daher habe ich eine ganze Reihe von Hilfsmethoden zum Casting / Projizieren, die …
Kann mir jemand sagen, ob es mit Generika eine Möglichkeit gibt, ein generisches Typargument Tnur auf Folgendes zu beschränken : Int16 Int32 Int64 UInt16 UInt32 UInt64 Ich kenne das whereSchlüsselwort, kann aber keine Schnittstelle nur für diese Typen finden. Etwas wie: static bool IntegerFunction<T>(T value) where T : INumeric
Gemäß der Dokumentation des ==Betreibers in MSDN , Für vordefinierte Werttypen gibt der Gleichheitsoperator (==) true zurück, wenn die Werte seiner Operanden gleich sind, andernfalls false. Für andere Referenztypen als Zeichenfolge gibt == true zurück, wenn sich die beiden Operanden auf dasselbe Objekt beziehen. Für den Zeichenfolgentyp vergleicht == die …
Ich habe eine generische Klasse in meinem Projekt mit abgeleiteten Klassen. public class GenericClass<T> : GenericInterface<T> { } public class Test : GenericClass<SomeType> { } Gibt es eine Möglichkeit herauszufinden, ob ein TypeObjekt abgeleitet ist GenericClass? t.IsSubclassOf(typeof(GenericClass<>)) funktioniert nicht.
Ich habe eine IEnumerable<T>Methode, mit der ich Steuerelemente auf einer WebForms-Seite finde. Die Methode ist rekursiv und ich habe einige Probleme, den gewünschten Typ zurückzugeben, wenn yield returnder Wert des rekursiven Aufrufs zurückgegeben wird. Mein Code sieht wie folgt aus: public static IEnumerable<Control> GetDeepControlsByType<T>(this Control control) { foreach(Control c in …
Ich frage mich, ob es in Java einen besonderen Grund gibt, immer " extends" statt " implements" für die Definition von Grenzen von Typparametern zu verwenden. Beispiel: public interface C {} public class A<B implements C>{} ist aber verboten public class A<B extends C>{} ist richtig. Was ist der Grund …
Ich habe eine generische Methode wie folgt definiert: public void MyMethod<T>(T myArgument) Als erstes möchte ich überprüfen, ob der Wert von myArgument der Standardwert für diesen Typ ist. if (myArgument == default(T)) Dies wird jedoch nicht kompiliert, da ich nicht garantiert habe, dass T den Operator == implementiert. Also habe …
Ich möchte so etwas machen: myYear = record.GetValueOrNull<int?>("myYear"), Beachten Sie den nullbaren Typ als generischen Parameter. Da die GetValueOrNullFunktion null zurückgeben konnte, war mein erster Versuch folgender: public static T GetValueOrNull<T>(this DbDataRecord reader, string columnName) where T : class { object columnValue = reader[columnName]; if (!(columnValue is DBNull)) { return …
Gibt es eine saubere Methode, eine Klasse mit generischen Parametern zu verspotten? Angenommen, ich muss eine Klasse verspotten, Foo<T>die ich an eine Methode übergeben muss, die a erwartet Foo<Bar>. Ich kann Folgendes leicht genug tun: Foo mockFoo = mock(Foo.class); when(mockFoo.getValue).thenReturn(new Bar()); Angenommen, es wird getValue()der generische Typ zurückgegeben T. Aber …
Im Internet finden Sie Folgendes: Höher sortierter Typ == Typ Konstruktor? class AClass[T]{...} // For example, class List[T] Einige sagen, dies sei ein höherwertiger Typ, da er über Typen abstrahiert, die der Definition entsprechen würden. Höher sortierte Typen sind Typen, die andere Typen annehmen und einen neuen Typ erstellen Diese …
Was ist der Grund, warum Java dies nicht zulässt? private T[] elements = new T[initialCapacity]; Ich konnte verstehen, dass .NET uns dies nicht erlaubt hat, da Sie in .NET Werttypen haben, die zur Laufzeit unterschiedliche Größen haben können, aber in Java sind alle Arten von T Objektreferenzen und haben daher …
Ich habe Probleme beim Navigieren in der Java-Regel zum Ableiten generischer Typparameter. Betrachten Sie die folgende Klasse mit einem optionalen Listenparameter: import java.util.Collections; import java.util.List; public class Person { private String name; private List<String> nicknames; public Person(String name) { this(name,Collections.emptyList()); } public Person(String name,List<String> nicknames) { this.name = name; this.nicknames …
Ich habe; List<String> stringList = new ArrayList<String>(); List<Integer> integerList = new ArrayList<Integer>(); Gibt es eine (einfache) Möglichkeit, den generischen Typ der Liste abzurufen?
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.