Veröffentlicht 5. April 20196 j Hallo, ich möchte aktuell in einer Typisierten Klasse (bzw. erstmal im Interface) einen Typ als Nullable definieren. Geht das überhaupt? Ich kann leider nichts dazu finden. public interface IBaseElement<T> { void InsertOrUpdate(T? givenDBElement = null); } ist leider nicht erlaubt da T per se mal nicht nullable ist. Ich hätte auch versucht etwas wie public interface IBaseElement<T> where T : Nullable { void InsertOrUpdate(T? givenDBElement = null); } zu verwenden, aber auch das akzeptiert mir der Compiler nicht. Danke LG Jasso
5. April 20196 j Wenn du damit leben kannst, nur Klassen als generischen Typ zu nutzen kannst du das mit public interface IBaseElement<T> where T : class machen - die sind dann auch nullable. Wenn das auch für structs funktionieren soll, kommst du kaum um Runtime-Checks herum, sowas wie das hier: if(Nullable.GetUnderlyingType(typeof(T)) != null) { "Nullable!".Dump(); } else if(typeof(T).IsValueType) { "struct".Dump(); } else { "class".Dump(); }
5. April 20196 j vor 28 Minuten schrieb jasso: Ich kann leider nichts dazu finden. https://docs.microsoft.com/de-de/dotnet/csharp/programming-guide/generics/constraints-on-type-parameters https://docs.microsoft.com/de-de/dotnet/api/system.nullable-1?view=netframework-4.7.2 https://docs.microsoft.com/de-de/dotnet/csharp/programming-guide/nullable-types/how-to-identify-a-nullable-type
5. April 20196 j Autor @arlegermi: "nur Klassen" würde mir vollkommen reichen. Leider funktioniert es damit ebenfalls nicht. Mit ... public interface IBlub<T> where T : class { void InsertOrUpdate(T? givenDBElement = null); } … bekomme lediglich vom Compiler die Meldung: Zitat Der Typ "T" darf keine NULL-Werte zulassen, wenn er als T-Parameter im generischen Typ oder in der generischen Methode "Nullable<T>" verwendet werden soll. @KeeperOfCoffe: Danke fürs nachgoogeln. Die Ergebnisse habe ich bereits gefunden. Helfen mir nur in meinem konkreten Fall leider nicht weiter. Danke LG Jasso
5. April 20196 j Wenn du schon den Constraint where T : class hast, dann brauchst du kein ? mehr hinter dem Parameter - die sind ja eh nullable. Oder geht's dir hier gerade um das neue Sprachfeature mit nullable reference types in C# 8?
5. April 20196 j Autor au weh … da hast Du natürlich recht. War noch ein gedankliches Überbleibsel aus meinen ersten Versuchen. Danke so funktioniert es! LG Jasso
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.