Est la méthode appelée avec une valeur null ou donne-t-il une exception de référence null ?
Si c’est le cas, je vais devoir jamais vérifier mon « Thi » paramètre null ?
Est la méthode appelée avec une valeur null ou donne-t-il une exception de référence null ?
Si c’est le cas, je vais devoir jamais vérifier mon « Thi » paramètre null ?
Qui fonctionne parfaitement (sans exception). Méthodes d’extension ne pas utiliser les appels virtuels (c'est-à-dire qu’il utilise le « appelez » instruction de langage, pas « callvirt ») donc il n’y a aucun contrôle null sauf si vous l’écrire vous-même dans la méthode d’extension. C’est réellement utile dans certains cas :
etc.
Fondamentalement, les appels aux appels statiques sont très littérales - c'est-à-dire
devient :
où il n’y a évidemment aucun contrôle null.
Comme vous l'avez déjà découvert, depuis les méthodes d'extension sont tout simplement glorifié méthodes statiques, ils seront appelés null
références passées, sans NullReferenceException
d'être jeté. Mais, depuis, ils ressemblent à des méthodes d'instance à l'appelant, ils doivent aussi se comporter comme tel. Vous devriez alors, la plupart du temps, vérifier l' this
paramètre et renvoie une exception si c'est null
. C'est OK de ne pas le faire si la méthode explicitement prend soin de null
des valeurs et des son nom l'indique, dûment, comme dans les exemples ci-dessous:
public static class StringNullExtensions {
public static bool IsNullOrEmpty(this string s) {
return string.IsNullOrEmpty(s);
}
public static bool IsNullOrBlank(this string s) {
return s == null || s.Trim().Length == 0;
}
}
J'ai également écrit un billet de blog à propos de ce il y a quelques temps.
Une valeur null sera être passée à la méthode d’extension.
Si la méthode essaie l’objet sans vérifier l’accès est-il null, alors oui, il lèvera une exception.
Un gars a écrit « IsNull » et « IsNotNull » méthodes d’extension qui vérifient la référence passe nulle ou non. Personnellement, je pense que c’est une aberration et ne devrait pas avoir vu la lumière du jour, mais il est parfaitement valide c#.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.