2015-09-23 4 views
9

I ‚T‘ geben Sie die Störung erhalte:Ein Wert vom Typ ‚<null>‘ kann nicht als Standardparameter verwendet werden, da es keine Standard-Konvertierungen sind

A value of type '' cannot be used as a default parameter because there are no standard conversions to type 'T'

bei dem Versuch, dieses Stück Code zu schreiben

Hat jemand Idee, wie Null-Wert-Typen zu machen. Gibt es das überhaupt, um das zu tun?

+1

'protected T GetValue (Expression > Eigenschaft, T defaultValueIfNull = null) where T: CLASS' –

Antwort

15

Es gibt keine Einschränkungen für den Typ T, daher kann es ein Werttyp sein.
Sie Methodendefinition als

protected T GetValue<T>(Expression<Func<T>> property, T defaultValueIfNull = default(T)); 


umschreiben Welche null für Referenztypen und Standardwert für Werttypen bedeuten.

+1

eigentlich, wenn Sie nicht gehen, um Werttypen an diese Methode übergeben, wird besser sein Einschränkung für Verfahren hinzuzufügen, oder (wenn Typ T durch Klasse definiert ist) für Klasse. –

+0

Das hat mir tatsächlich geholfen, das Problem zu lösen. :) tq –

7

T In diesem Fall könnte auch ein Werttyp sein, z. B. int, der nicht null sein kann. Sie sollten eine Art Einschränkung angeben, T Klassen zu beschränken:

...T defaultValueIfNull = null) where T : class 

Eine alternative ...T defaultValueIfNull = default(T)) verwenden würden - Sie würden die Einschränkung nicht brauchen, aber Werttypen 0 standardmäßig werden würde, statt null.

Verwandte Themen