Considérez le code écrit lorsqu'une NullReferenceException se produit lors du processus d'attribution d'une valeur à une cellule de répartition. J'ai ajouté la vérification Null sans réfléchir profondément, mais il y a beaucoup de choses à penser.
Un code qui affiche la valeur obtenue à partir de la base de données dans la propagation, et la valeur peut ou non être nulle. Étant donné que la diffusion est un produit tiers, nous l'avons remplacé par notre propre classe. Un jour, une NullReferenceException s'est produite au point où une valeur a été affectée à une cellule.
public void Main(SpreadCell cell)
{
int? dbValue = null;
//Le processus d'obtention de la valeur de la base de données est omis.
//NullReferenceException se produit.
cell.Value = dbValue.Value;
}
/**Étaler l'objet de cellule**/
private class SpreadCell
{
public Object Value { get; set; }
}
public void main(SpreadCell cell) {
Integer dbValue = null;
//Le processus d'obtention de la valeur de la base de données est omis.
//NullPointErexception se produit.
cell.setValue(dbValue.intValue());
}
J'ajoute une vérification Null sans réfléchir, et il n'y a rien d'autre. Notez que vous n'avez pas besoin d'une vérification nulle par-dessus tout.
public void Main(SpreadCell cell)
{
int? dbValue = null;
//Le processus d'obtention de la valeur de la base de données est omis.
//Attribuez une valeur uniquement si elle n'est pas Null.
if (dbValue != null)
{
cell.Value = dbValue.Value;
}
}
public void main(SpreadCell cell) {
Integer dbValue = null;
//Le processus d'obtention de la valeur de la base de données est omis.
//Attribuez une valeur uniquement si elle n'est pas Null.
if (dbValue != null) {
cell.setValue(dbValue.intValue());
}
}
Il n'y a aucun problème si le type Nullable est remplacé tel quel. Si vous donnez une centaine d'étapes et effectuez une vérification nulle, veuillez entrer le code d'initialisation de la cellule.
public void Main(SpreadCell cell)
{
int? dbValue = null;
//Le processus d'obtention de la valeur de la base de données est omis.
//Vous pouvez le remplacer tel quel.
cell.Value = dbValue;
//Si vous utilisez l'instruction if, veuillez l'initialiser.
cell.Value = null;
if (dbValue != null)
{
cell.Value = dbValue.Value;
}
}
public void main(SpreadCell cell) {
Integer dbValue = null;
//Le processus d'obtention de la valeur de la base de données est omis.
//Vous pouvez le remplacer tel quel.
cell.setValue(dbValue);
//Si vous utilisez l'instruction if, veuillez l'initialiser.
cell.setValue(null);
if (dbValue != null) {
cell.setValue(dbValue.intValue());
}
}
Vous ne devriez pas simplement ajouter une vérification Null sans réfléchir simplement parce que vous obtenez une NullReferenceException. Si vous avez besoin d'une vérification nulle, n'oubliez pas le code d'initialisation.
Pour ceux qui font face à ces obstacles, je crains que d'autres codes aient été corrigés correctement.
Article précédent (traitement inutile pour la collecte)
[Article suivant (Gestion des types booléens)] (http://qiita.com/csharpisthebest/items/b0c44764948e1334e94a)
Recommended Posts