Il existe un moyen d'utiliser le type Nullable (par exemple, int?
) pour un paramètre - il nécessite un peu d'édition manuelle du fichier de paramètres, mais fonctionne ensuite correctement dans l'environnement VS et dans le code. Et ne nécessite pas de fonctions supplémentaires ou des wrappers.
Pour ce faire, créez un paramètre avec le nom souhaité (par exemple RequiredNumberOfLimit) et en font de tout type (par exemple la norme int
pour plus de commodité). Enregistrez les modifications.
Maintenant allez dans votre dossier de projet et ouvrez le fichier "Properties \ Settings.settings" avec l'éditeur de texte (Notepad, par exemple) Ou vous pouvez l'ouvrir dans VS en cliquant-droit dans l'Explorateur de solutions sur "< Your Project -> Propriétés -> Settings.settings ", sélectionnez" Ouvrir avec ... ", puis choisissez" Éditeur XML "ou" Éditeur de code source (texte) ". Dans les paramètres xml ouverts à trouver votre établissement (il ressemblera à ceci):
<Setting Name="RequiredNumberOfLimit" Type="System.Int32" Scope="User">
<Value Profile="(Default)">0</Value>
</Setting>
Changer le PARAM « Type » System.Int32
-System.Nullable<System.Int32>
. Et efface également la valeur par défaut (donc null pourrait être utilisé par défaut). Maintenant, cette section devrait ressembler à ceci (notez que <
et >
sont utilisés pour représenter <
et >
symboles dans la chaîne de type - ceci est fait pour l'analyse correcte de xml par VS):
<Setting Name="RequiredNumberOfLimit" Type="System.Nullable<System.Int32>" Scope="User">
<Value Profile="(Default)" />
</Setting>
maintenant enregistrer les modifications et rouvrir les paramètres du projet - voilà! - nous avons le paramètre RequiredNumberOfLimit avec le type System.Nullable<System.Int32>
qui est analysé correctement par VS Settings Designer, ainsi qu'il pourrait être utilisé comme une variable normale int?
dans le code.
Si vous souhaitez que ce paramètre puisse renvoyer null
, vous devez conserver le champ de valeur par défaut. Sinon, la valeur par défaut sera retournée par ce paramètre si elle a déjà été affectée à null (mais c'est comment les valeurs par défaut fonctionnent, n'est-ce pas?: P).
Utilisez var au lieu? – Gage
@Gage: Je pense que cela manque le point. Il veut que le paramètre * défini * soit un int? –