web-dev-qa-db-fra.com

Créer des types non nullables en C #

Comment créer des types de valeurs non nullables comme int, bool, etc. en C #?

48
Navid Rahmani

Oui, ceux-ci sont appelés struct.

Les structures sont des types de valeur, tout comme int, bool et autres.

Ils ont des règles/recommandations qui leur sont liées: (je pense que ce sont les plus importants)

  • une structure est passée et affectée par valeur, lorsque vous n'utilisez pas de mots clés ref ou out ... cela signifie que tout ce que vous mettez dans une structure sera copié lors de son affectation ou de sa transmission à une méthode. C'est pourquoi vous ne devez pas créer de grandes structures.

  • vous ne pouvez pas définir un constructeur sans paramètre pour une structure en C #

  • les structures sont préférables pour être immuables, et n'ont pas de poseurs de biens. Vous pouvez avoir de vrais ennuis en créant des structures mutables.

D'autres règles peuvent être trouvées dans les documents Microsoft sur les structures.

Quant à types de référence non nullables ... c'est pas possible. Vous devez vérifier manuellement les valeurs nulles dans votre code.

53
Miguel Angelo

Vous pouvez définir un struct :

Un type de structure est un type de valeur qui est généralement utilisé pour encapsuler de petits groupes de variables liées, telles que les coordonnées d'un rectangle ou les caractéristiques d'un article dans un inventaire. L'exemple suivant montre une déclaration de structure simple:

public struct Book
{
    public decimal price;
    public string title;
    public string author;
}

Cependant, vous ne pouvez pas définir d'alias comme int pour System.Int32 et doivent se référer au nom complet MyNamespace.Book (ou Book avec using MyNamespace;) à votre structure.

12
dtb

7 ans plus tard et c'est désormais possible

  • Installez .NET Core 3.0 qui inclut C # 8.
  • Définissez la version linguistique sur 8.0: 8.0 dans votre fichier .csproj.
  • Ajoutez la propriété true (. À votre csproj)

Plus de détails sur son impact sur l'écriture de code et votre code existant ici:

https://praeclarum.org/2018/12/17/nullable-reference-types.html

11
Brian Rosamilia