En C# 3.0, vous pouvez affecter null à int? Type (? en int CLR est un struct):Type de valeur C# initialisé avec null
int? a = null;
mais lorsque vous définissez une structure personnalisée:
struct MyStruct
{
}
il y a une erreur lors de la compilation de ce code:
MyStruct a = null;
L'erreur est la suivante:
Cannot convert null to 'Example.MyStruct' because it is a non-nullable value type
Alors qu'int? est une structure dans CLR il est en quelque sorte contre-intuitif que nous pouvons assigner null à elle. Je suppose que null est implicitement cast ou encadré à un int de certian? valeur qui représente la valeur nulle. Comment est-ce fait précisément? Comment puis-je prolonger MyStruct de telle sorte qu'il serait possible d'exécuter la ligne:
MyStruct a = null;
Moment intéressant de cette question. Je viens de finir de lire le chapitre sur les types nullables dans le livre de Jon (C# en profondeur). Chaque développeur C# devrait le lire !! Merci Jon. – Bryan
Je voudrais juste souligner que je n'ai pas payé pour ce commentaire :) –
Votre instruction "Notez qu'il s'agit vraiment d'une fonctionnalité de langue" est quelque peu déroutante puisque le CLR * fait * (comme vous le mentionnez plus tard) gérer 'Nullable <>' structs spécialement dans les opérations de boxe et de déballage, qui à mon humble avis en fait une fonctionnalité d'exécution (avec un peu de sucre syntaxique «?» Pour couronner le tout). – Lucero