问题
I stumbled upon this code on github:
if (requestHeaders is {})
and I don't understand what it does exactly.
Upon experimenting it's seems to only be false when requestHeaders is null.
Is this just another way of writing if (requestHeaders != null)
or if (!(requestHeaders is null))
?
回答1:
The pattern-matching in C# supports property pattern matching. e.g.
if (requestHeaders is HttpRequestHeader {X is 3, Y is var y})
The semantics of a property pattern is that it first tests if the input is non-null. so it allows you to write:
if (requestHeaders is {}) // will check if object is not null
You can write the same type checking in any of the following manner that will provide a Not Null
Check included:
if (s is object o) ... // o is of type object
if (s is string x) ... // x is of type string
if (s is {} x) ... // x is of type string
if (s is {}) ...
Read more here.
回答2:
you should be able to do like below..
Input : str = null // initialize by null value
String.IsNullOrEmpty(str)
Output: True
Input : str = String.Empty // initialize by empty value
String.IsNullOrEmpty(str)
Output: True
So based on True false you can get results.
来源:https://stackoverflow.com/questions/59361400/is-this-pattern-matching-expression-equivalent-to-not-null