Convertir en décimal? pour le double?
Je me demande quelle serait la meilleure façon (dans le sens de la sécurité et de concision) pour convertir d'un type nullable à l'autre "compatible" type nullable.
Plus précisément, la conversion de décimal? pour le double? peut être fait en utilisant:
public double? ConvertToNullableDouble(decimal? source)
{
return source.HasValue ? Convert.ToDouble(source) : (double?) null;
}
Est-il une meilleure façon de le faire? Peut-être en tirant parti d'une conversion standard?
Votre chemin est un bon moyen.
Vous êtes sur la bonne voie! Vérifiez également cette référence: stackoverflow.com/questions/5487685/...
Vous êtes sur la bonne voie! Vérifiez également cette référence: stackoverflow.com/questions/5487685/...
OriginalL'auteur Camilo Martinez | 2013-05-02
Vous devez vous connecter pour publier un commentaire.
Construit en jette pour la victoire! Juste testé cela dans VS2012 et VS2010:
Simplement à l'aide d'un cast explicite sera jeté null, null, et la valeur décimale à double. Succès!
C'est étrange, car dans des questions comme celle MUG4N liés à il semble que beaucoup de gens ont des théories, mais on n'a pas fait essayé. 🙂
En fait, tous conversions qui impliquent un non nullable type de la valeur de la source et de la cible peut être "levé à nullable".
C'est étrange, depuis que j'ai pu voir un explicite de la conversion à la non-type nullable, mais pas implicite.
La conversion de décimal à double est explicite, la conversion de décimal? pour le double? est également.
OriginalL'auteur Avner Shahar-Kashtan
En général, si vous voulez o convertir tout type de données à l'autre tant qu'ils sont compatibles, utilisez ceci:
par exemple:
Un peu plus loin, si vous voulez qu'il soit plus sûr, vous pouvez ajouter un try catch:
c'est testé sous VS 2010
vous pouvez utiliser ceci: décimal? v1 =222; double? V2 = (double?)Convertir des.ChangeType(v1, typeof(double)); mais si v1 est null, Convertir.ChangeType va lancer une exception. et puis le try catch dose la gauche de l'emploi.
OriginalL'auteur Gisway