It is a very common practice to check for null in parameters:
public void DoSomething(Foo foo)
{
if (foo is null)
{
throw new Arg...
For further actions, you may consider blocking this person and/or reporting abuse
I like the readability of that API
Minor suggestion, use “argument is null” instead of “argument == null”
The == operator can be overloaded and we can’t guarantee the overload null checks it’s arguments.
Thanks Sam! I just updated the sample code with 'is null'. You are totally right.
Just one note: You want the actual name of the parameter to show in the exception, not the type name, so you need to change the signature to
IsNull<T>(T argument, string argumentName)
and call it like this:ThrowIf.Argument.IsNull(foo, nameof(foo))
.Also, you're adding one more method call to the stacktrace, but that's really not a big deal, though.
See fiddle.
Yes you are right. I noticed it days ago and wanted to fix this today before anyone discovering the mistake. Then your comment comes LOL
We can fix this by
ThrowIf.Argument.IsNull(foo, nameof(foo))
, butfoo, nameof(foo)
is really redundant. I want to get the caller params name in callee directly and I found this: Proposal: Caller Parameter Name #1557. We can get the caller member name, line number, and the file path, but we cannot get the caller's params name.For now,
ThrowIf.Argument.IsNull(foo, nameof(foo))
may be the only way to display the name of paramsThanks for calling out! I just updated the blog according to your suggestion.
Impressive quality for a first blog post! Congrats and welcome.
Check this out, just came out infoq.com/news/2020/06/CSharp-9-Null/
Great! I am really looking forward to the new features in C# 9
I like it. Couldn’t it be better if we use nameof instead of passing the argument.
Thanks, I just removed the hardcode params name and use nameof instead. It will be perfect if we can get the caller's params name in callee method. According to Proposal: Caller Parameter Name #1557 it's not possible for now.