Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
153 views
in Technique[技术] by (71.8m points)

c# - Is this pattern matching expression equivalent to not null

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))?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...