Comment créer une structure ‘Nullable’ par définition?

struct AccountInfo { Ssortingng Username; Ssortingng Password; } 

maintenant si je veux avoir une instance Nullable , je devrais écrire:

 Nullable myAccount = null; 

Mais je veux rendre la struct Nullable par nature et elle peut être utilisée comme ça (sans utiliser Nullable ):

 AccountInfo myAccount = null; 

Vous ne pouvez pas Les structures sont considérées comme des types de valeur et, par définition, ne peuvent pas être nulles. Le moyen le plus simple de le rendre nullable est d’en faire un type de référence.

La réponse que vous devez vous poser est “Pourquoi est-ce une structure?” et à moins que vous ne puissiez penser à une raison vraiment solide, ne le faites pas et faites-en un cours. L’argument concernant une structure étant “plus rapide”, est vraiment exagéré, car les structures ne sont pas nécessairement créées sur la stack (vous ne devriez pas vous y fier), et la vitesse “gagnée” varie au cas par cas.

Voir le post de Eric Lippert sur le débat de classe vs struct et la vitesse.

Lorsque vous le déclarez, déclarez-le avec un “?” si tu préfères

 AccountInfo? myAccount = null; 

La réponse courte: Faites-en une classe.

La longue réponse: Cette structure mutable, qui ne devrait jamais l’être, ne représente pas une seule valeur que structs devrait toujours avoir, et n’a pas de valeur sensible “zéro” que les structures devraient également toujours, donc elle ne devrait probablement pas être un type de valeur . Faire une classe (type de référence) signifie qu’il est toujours possible qu’elle soit nulle.


Remarque: L’utilisation de mots tels que “jamais” et “toujours” devrait être prise avec un “presque” implicite.