2010-01-16 4 views
5

Possible en double:
a curious c# syntaxQue fait le? signifie après un type?

Je l'ai vu un peu de code autour et certains d'entre eux utilise un? après le type, comme celui-ci:

private Point? loc = null; 

Je me demande donc si le point? est différent de Point (ne peut pas mettre un point d'interrogation à la fin de ma phrase ou je vais vous embrouiller les gars ...:]). La langue que j'utilise est C# au fait.

+2

Pour écrire "code" dans les phrases normales, utilisez les guillemets, 'pour marquer le texte comme" code ". De cette façon, vous pouvez utiliser des chevrons, et si vous aviez placé le point d'interrogation à l'intérieur, vous n'auriez pas dérouté personne non plus. –

+0

Dup de http://stackoverflow.com/questions/2069863/a-curious-c-syntax/2069873#2069873 – Eilon

Répondre

9

T? est un raccourci (en C#) pour Nullable<T> - donc Point? est une autre façon d'écrire ou Nullable<Point> exemple.

Voir les sections 1.3 et 4.1 de la spécification de langage C# 3 - et divers autres endroits, pour être honnête - pour plus de détails. Voir les documents pour System.Nullable<T> pour plus d'informations du côté du cadre des choses. Ou lisez le chapitre 4 de C# en profondeur :) (Malheureusement, ce n'est pas l'un des chapitres gratuits.)

(Cette question est censée être un doublon, mais je n'ai pas l'énergie de le trouver pour le moment.)

+1

Il est en effet un dup: http://stackoverflow.com/questions/2069863/a-curious-c -syntax/2069873 # 2069873 – Eilon

+0

Un autre doublon: http://stackoverflow.com/questions/2072482/in-c-what-is-the-in-the-type-datetime –

+0

Savait que c'était quelque part, mais n'a pas pu trouver il (je ne pense pas que la recherche peut gérer? très bien et je n'avais aucune idée que c'était nullable ... Désolé les gars. – DMan

2

Point? est la même que Nullable<Point>. Il vous permet d'affecter null aux types de valeur, tels que struct s.

0

Cela signifie que le type peut accepter sa valeur et null.