2

Il est souvent le cas quand je dois vérifier les arguments d'une méthode pour ne pas être nulle, quelque chose comme:VS: automatique « Contrôle « ArgumentNull

public static bool operator <= 
    (ApplicationVersion i_app1, ApplicationVersion i_app2) 
{ 
    if (i_app1 == null) throw new ArgumentNullException("i_app1"); 
    if (i_app2 == null) throw new ArgumentNullException("i_app2"); 
    [...] 
} 

Est-il possible de le faire (semi) automatique, ?? comme extraits de code Autocomplete ReSharper

Répondre

2

ReSharper a cette fonction Si vous avez le curseur sur le nom du paramètre -. dire i_app1 et appuyez sur Alt-Entrée -. il offre la possibilité de vérifier null

+0

ok, donc je suis officiellement aveugle. –

+0

Il est caché sous l'icône d'ampoule qui apparaît sur votre gauche une fois que votre curseur est sur le paramètre - dans la signature de la méthode. Aussi quelle version de R # utilisez-vous? – Rashack

+0

Le commentaire "Je suis aveugle" a été conçu comme de l'auto-ironie, c'est-à-dire que la réponse était juste là sous mon nez et je n'ai pas réussi à la voir jusqu'à ce que vous me l'indiquiez :). –

2

je une extension méthode pour cela qui fait au moins sligh TLY plus simple:

i_app1.ThrowIfNull("i_app1"); 

La mise en œuvre est simple:

public static void ThrowIfNull<T>(this T argument, string name) 
    where T : class 
{ 
    if (argument == null) 
    { 
     throw new ArgumentNullException(name); 
    } 
} 

Je préfère cela à l'aide d'extraits ou que ce soit, comme cela signifie que le code lui-même est plus court. La saisie est rarement un problème pour moi - alors que le code le plus lisible possible est.

Espérons que Code Contracts dans .NET 4.0 rendra encore plus net.

+0

Ce type de méthode d'extension me fait un peu frémir. La seule chose plus troublante est les méthodes d'extension ByRef :). http://blogs.msdn.com/jaredpar/archive/2008/12/11/extension-methods-and-byref-targets.aspx – JaredPar

+0

@Jared: Qu'est-ce que vous n'aimez pas? Il dit ce que vous avez l'intention de faire incroyablement simplement. En ce qui concerne le "par ref" un - probablement cela ne fonctionne pas en C#? J'espère vraiment pas! –

+0

Ma réaction de l'intestin est de rechigner à une méthode qui est appelée sur une référence nulle. Je me rends compte que c'est une méthode d'extension et sous le capot, cela devient un appel statique, donc pas de problème. Mais j'ai encore du mal à surmonter la réaction intestinale initiale. – JaredPar

Questions connexes