Object.CompareTo (Object) для неизвестного типа данных - PullRequest
5 голосов
/ 23 ноября 2011

Я пытаюсь сравнить объекты в object[], которые относятся к одному типу (неизвестно во время выполнения). Они бывают System.string, int, decimal, Datetime или bool типов.

Есть ли способ сравнить два из этих объектов, чтобы определить, является ли один из них больше или меньше другого, без предварительной приведения их в соответствующий тип?

Ответы [ 3 ]

7 голосов
/ 23 ноября 2011

Все рассматриваемые типы реализуют IComparable, поэтому, если возможность сравнивать элементы является внутренним требованием вашего массива, вы можете объявить его как IComparable[].

2 голосов
/ 23 ноября 2011

Все эти типы реализуют интерфейс IComparable, поэтому вы можете привести ваши объекты к IComparable (или просто сохранить массив IComparable[] вместо object[]). Тогда вы можете использовать CompareTo(object x) метод.

1 голос
/ 23 ноября 2011

Все перечисленные вами типы реализуют IComparable, поэтому вы можете использовать IComparable.CompareTo.Как пример:

object[] ints = new object[] { 2, 1, 3};
object n = 2;
var compareResults = ints.OfType<IComparable>().Select(c => c.CompareTo(n));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...