2010-08-18 4 views
1

Dans le code suivant, comment puis-je rechercher une exception de référence nulle de manière "conforme aux bonnes pratiques"?LINQ: Vérification de NullReferenceException

if (primaryMenu.ChildNodes.Any(p=>VirtualPathUtility.GetFileName(p.SiteURL).Equals(selectedPage))) 
{ 
    primaryMenuTab.Attributes.Add("class", "current"); 
} 

La façon dont je le fais est actuellement (mais JetBrain ReSharper doesnt't wana accepter et me garder d'avertissement sur la partie suivante: VirtualPathUtility.GetFileName (p.SiteURL) qui est compréhensible),

if (primaryMenu.ChildNodes.Any(p=> p.SiteURL != null && VirtualPathUtility.GetFileName(p.SiteURL).Equals(selectedPage))) 
{ 
    primaryMenuTab.Attributes.Add("class", "current"); 
} 

où les menus ont la structure suivante,

public class MultiLevelMenuNodeList 
{ 
    public string Name { get; set; } 
    public string Permission { get; set; } 
    public string SiteURL { get; set; } 
    public string Visibility { get; set; } 
    public List<SingleLevelMenuNodeList> ChildNodes { get; set; } 
} 

public class SingleLevelMenuNodeList 
{ 
    public string Name { get; set; } 
    public string Permission { get; set; } 
    public string SiteURL { get; set; } 
    public string Visibility { get; set; } 
    public string TabPosition { get; set; } 
} 

Merci à l'avance des suggestions et des conseils. Je suis un peu accro à se stackoverflow :)

+0

quel est l'avertissement qui est affiché par re-chargeur? – shahkalpesh

Répondre

3

Une solution simple consiste à utiliser simplement == qui est nul en toute sécurité:

if (primaryMenu.ChildNodes.Any(p => 
     VirtualPathUtility.GetFileName(p.SiteURL) == selectedPage)) 

(Cela suppose GetFileName lui-même peut faire face à l'entrée nulle, sinon mettre votre première null revenir en arrière.)

+0

@shashkalpesh cela montre Possible 'System.NullReferenceException' @Jon Merci :) Je vais l'utiliser et voir comment ça se passe. – MSI

+0

Yup ReSharper ne montre aucun avertissement lorsque j'utilise ==. Merci – MSI

Questions connexes