Я работаю над методом, который сравнивает набор объектов (поскольку объект поддерживает все типы), если они все одинаковые, он возвращает true, но если один или несколько различаются, он возвращает false.
Вот что у меня есть:
public static bool Compare(bool compareTypes = false, params object[] values)
{
if (!compareTypes)
{
if (values is null || values.Length == 0) return false;
else if (values.Length == 1) return true;
else return values[0] == values[1];
}
else
{
if (values is null || values.Length == 0) return false;
else if (values.Length == 1) return true;
else return values[0].GetType() == values[1].GetType();
}
}
И это работает нормально, пока количество объектов равно 2.
Моя проблема в том, что я хочу, чтобы метод сравнивал значение или тип всех передаваемых параметров независимо от суммы
Это то, что я хочу, чтобы мой метод делал
Compare (false, "Hello", "Hello") //True
Compare(false, "Hello", "Bye") //False
Compare(true, 0, 1) //True
Compare(true, "Hi", 20) //False
Compare(false, "LOL", "LOL", "LOL", "LOL") //True
Compare(false, "LOL", "LOL", "LOL", "lol") //False
Я думаю, что есть место для улучшения дизайна того, над чем вы работаете. Каков больший масштаб того, что вы делаете? Почему передача всех элементов таким образом в
object[]
— это то, что вы решили сделать.@GiladGreen Рад слышать
Вы могли бы облегчить себе жизнь, создав 2 метода:
CompareValue
иCompareType
вместо того, чтобы выполнять эту логикуif else
внутри одного метода.используя linq, вы можете использовать
values.Count() == values.Distinct().Count();