Pourquoi l'utilisation d'un null jeté comme paramètre?
Quand et pourquoi quelqu'un voudrait-il faire ce qui suit:
doSomething( (MyClass) null );
Avez-vous déjà fait cela? Pourriez-vous s'il vous plaît partagez votre expérience?
- Peut-être juste un inexpérimenté codeur? Ou quelqu'un qui a changé le code de doSomething((cast)quelque chose); et a voulu changer à null, et n'a tout simplement pas la peine de retirer le plâtre? Est-il dans plus d'un endroit, ou juste un exemple?
- Je ne me souviens pas où je l'ai lu, mais je l'ai vu et appris que vous ne pouvez lancer une valeur null à un objet. Le problème est, je ne peux pas trouver un scénario raisonnable! 😛
- Double Possible de Pourquoi cast null à l'Objet?
Vous devez vous connecter pour publier un commentaire.
Si
doSomething
est surchargé, vous avez besoin de jeter l'null explicitement àMyClass
de sorte que le droit de surcharge est choisi:Un non-artificiel situation où vous avez besoin de jeter, c'est quand vous appelez une varargs fonction:
La dernière ligne va produire de l'avertissement suivant:
Disons que vous disposez de ces deux fonctions, et supposons qu'ils acceptent
null
comme une valeur valide pour le second paramètres.void ShowMessage(String msg, Control parent);
void ShowMessage(String msg, MyDelegate callBack);
Ces deux méthodes ne diffèrent que par le type de leur deuxième paramètres. Si vous souhaitez utiliser l'un d'eux avec un
null
comme deuxième paramètre, vous devez jeter lenull
le type de la deuxième argument de la fonction correspondante, de sorte que le compilateur peut décider quelle fonction appeler.Pour appeler la première fonction:
ShowMessage("Test", (Control) null);
Pour la deuxième:
ShowMessage("Test2", (MyDelegate) null);