DEV Community

Shayan
Shayan

Posted on • Originally published at shayankamalzadeh.Medium

2 1

Equality Array(Data Structure tips in C#)

Hello guys, today I want to focus on Array, actually, I hope you know about array and in this article, I try to a bit deeper into it. so let's go…
I start with a sample:

Image description

define 2 DateTime array
I have defined exactly 2 DateTime arrays like each other, just the names are different.
What do you think? are they equal to each other?

Image description

As you see, when using the ‘==’ operator for 2 arrays, however, each item is exactly like the other, the result is false!
I hope you remember Value-type and Reference-type.

Image description

When I define a value-Type like DateTime, each variable is put in memory like the above picture so “mydate!=yourdate”.Now let’s look at how Reference-Types are stored

Image description

Reference-Type means the variable doesn't actually contain the string ”Shayan” and stores the address of memory where store the variable(xx).
However DataTime is Value-Type,DataType[] is Referencetype because ,Array is Reference-Type

Image description

Therefore when defining 2 Arrays with the same values, they are located at different addresses, and bankHols1==bankHols2 is false (why???)
Because the “==” operator for ReferenceType check Addresses and addresses are different.
this rule is ok for all Reference-Type collections in c#, But be careful about “String”.
The string is reference type but Microsoft overrides the”==” operator for it so when using the “==” operator for 2 string that is the same as each other the result is true.

Image description

Now the question is: how can compare just the value of 2 arrays?
Microsoft introduces the SequenceEqual() extension method (in the LinQ)

Image description

But be careful when using SequenceEqual(), it is too expensive because comparing each pair of elements if it is a bit large could be a lot of operations.

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay