I've been trying to write a program, in which I want to use the intersection of two HashSets
. Therefore I wrote the following code (for test purposes):
HashSet<int> test1 = new HashSet<int>() { 1, 3, 5, 7, 9 };
HashSet<int> test2 = new HashSet<int>() { 1, 2, 3, 4, 5, 6};
HashSet<int> intersect = new HashSet<int>();
intersect = test1.Intersect(test2);
Line 5 shows an error (code CS0266) which - that's C#'s suggestion - can be corrected by change the line to:
intersect = (HashSet<int>)test1.Intersect(test2);
But when I run the program, the error appears again. I literally have no clue why, even after searching for an answer.
I want to achieve a intersection in the mathematical sense, so that the result for the variable intersect should be { 1, 3, 5}
.
And what I found out - but couldn't test - is, that after using the intersect
-method on test1
, it changes the list in test1 to the intersection, is that true? If yes, is there any chance to avoid this? In my real program I don't want the variable to change into the intersection.
Should I just make a for-loop with an if-statement, to make my own intersection-method, or does this make the code worse?
As said, I tried to make use of C#'s suggestion, but this doesn't work either.
Because I'm a programming-beginner, I'm not really able to understand the definition of the intersect-method (because of this IEnumerable
thing...), so I can't solve the problem using existend methods. And because I think my own method could be very inefficient, I don't to it my own. Furthermore I just want to understand, what's the problem. There are two HashSets, both containing integers, which should be intersected and saved in an extra variable...