struct AccountInfo
{
String Username;
String Password;
}
maintenant si je veux avoir une instance Nullable
je devrais écrire:
Nullable<AccountInfo> myAccount = null;
Mais je veux faire le struct
Nullable
par nature et il peut être utilisé comme ceci (sans utiliser de Nullable<T>
):
AccountInfo myAccount = null;
Tu ne peux 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 faire 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 selon lequel une structure est "plus rapide", est vraiment exagéré, car les structures ne sont pas nécessairement créées sur la pile (vous ne devriez pas vous fier à cela), et la vitesse "gagnée" varie au cas par cas.
Voir le post par Eric Lippert sur le débat classe/structure 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 réponse longue: cette structure est modifiable, les structures ne devraient jamais être, ne représente pas une valeur unique que les structures devraient toujours, et n'a pas de valeur "zéro" sensible que les structures devraient également toujours, donc ce ne devrait probablement pas être un type de valeur . En 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" doit être prise avec un "presque" implicite.