J'ai créé une SPROC qui enregistre un objet et retourne l'ID du nouvel objet enregistré. Maintenant, j'aimerais retourner une INT PAS UN INT?
public int Save(Contact contact)
{
int? id;
context.Save_And_SendBackID(contact.FirstName, contact.LastName, ref id);
//How do I return an int instead of an int?
}
5 Réponses :
return id ?? 0; // Returns 0 if id is null
Notez que id.value code> lancera une exception lorsque l'identifiant est null. Dans certains contextes, cela sera approprié, sinon, utiliser ?? code>.
Est-ce que ?? code> fonctionne uniquement avec des types de référence nullables <> ou aussi des types de référence réguliers?
Si fonctionne avec tous les types de référence. x ?? y code> est essentiellement sténographique pour x! = null? x: y code>
Grand merci. Je savais ce que ça faisait, mais j'ai juste eu cette question à tête dans mon esprit.
return id.Value; You might wanna check if id.HasValue is true, and return 0 or something if not.
if (id.HasValue) return id.Value; else return 0;
ou ID de retour ?? 0 b>. Exactement le même :)
C'est une façon assez longue de dire " id ?? 0 code>"
@Blogbeard: Techniquement, ce serait ID de retour ?? 0; code> :)
@Philippe - En fait, ce n'est pas tout à fait i> la même chose; La valeur en vérification écrite deux fois i> si une valeur est attribuée. Le ?? code> Approche vérifie une fois b>. Pour vérifier aucun temps (et toujours se comporter à 100% identique), vous pouvez utiliser retour ID.GetvalUERefault () code>.
Vous pouvez utiliser la fonction Cependant, décider si c'est une bonne idée, c'est à vous de décider. Telle qu'une exception est peut-être plus appropriée? P> getvalueordfault () code> sur NULLABLE com / Questions / 3040173 / Comment-i-i-convert-int-in-int-int / 3040186 # 3040186 "> Réponse coalescente de Richard77 Mais je dirais un peu plus lisible ... p> if (! id.HasValue)
throw new Exception("Value not found"); // TODO: Use better exception type!
return id.Value;
+1 pour suggérer que jeter une exception pourrait être la chose appropriée à faire. Il me semble que trop de programmeurs sont très prompts à utiliser une valeur par défaut, sans d'abord vous assurer que NULL n'est pas vraiment une erreur.
return id.HasValue ? id.Value : 0; this returns the value of id in case it is not null and 0 in the other case.
Quel est le problème avec ID de retour ?? 0; code>, qui fait exactement la même chose et est plus efficace?