2011-11-22 34 views
5

Tôi đang cố gắng so sánh các đối tượng trong một object[] là một loại duy nhất (không xác định lúc chạy). Chúng thuộc loại System.string, int, decimal, Datetime hoặc bool loại.Object.CompareTo (Object) cho loại dữ liệu không xác định

Có cách nào để so sánh hai trong số các đối tượng này để xác định xem cái nào lớn hơn hoặc nhỏ hơn đối tượng khác mà không phải đưa chúng vào loại thích hợp trước tiên không?

+0

Bạn có ít nhất để truyền chúng sang IComparable và sau đó sử dụng CompareTo. – user629926

Trả lời

7

Các loại được đề cập đều thực hiện IComparable, vì vậy, nếu có thể so sánh các phần tử là một yêu cầu nội tại của mảng của bạn, bạn có thể khai báo nó như là một IComparable[] thay thế.

+1

Hah, Bạn đã nhanh hơn 3 giây ;-) –

2

Tất cả các loại này thực hiện giao diện IComparable, vì vậy bạn có thể truyền đối tượng của mình tới IComparable (hoặc chỉ giữ một mảng IComparable[] thay vì object[]). Sau đó, bạn có thể sử dụng phương thức CompareTo(object x).

1

Tất cả các loại bạn đề cập thực hiện IComparable, vì vậy bạn có thể sử dụng IComparable.CompareTo. Ví dụ:

object[] ints = new object[] { 2, 1, 3}; 
object n = 2; 
var compareResults = ints.OfType<IComparable>().Select(c => c.CompareTo(n)); 
Các vấn đề liên quan