Возможно, вам легче понять, если вы думаете о базовом представлении (хотя это действительно детализация реализации). Вот набор строк:
IEnumerable<string> strings = new[] { "A", "B", "C" };
Вы можете думать о том, что strings
имеет следующее представление:
[0] : string reference -> "A" [1] : string reference -> "B" [2] : string reference -> "C"
Это набор из трех элементов, каждый являясь ссылкой на строку. Вы можете передать это в коллекцию объектов:
IEnumerable<object> objects = (IEnumerable<object>) strings;
В основном это то же представление, за исключением того, что ссылки являются ссылками на объекты:
[0] : object reference -> "A" [1] : object reference -> "B" [2] : object reference -> "C"
Представление такое же. Ссылки рассматриваются только по-разному; вы больше не можете получить доступ к свойству string.Length
, но вы все равно можете вызвать object.GetHashCode()
. Сравните это с коллекцией ints:
IEnumerable<int> ints = new[] { 1, 2, 3 };
[0] : int = 1 [1] : int = 2 [2] : int = 3
Чтобы преобразовать это в IEnumerable<object>
, данные должны быть преобразованы путем бокса ints:
[0] : object reference -> 1 [1] : object reference -> 2 [2] : object reference -> 3
Это преобразование требует больше, чем литье.
Ни Date
, ни Calendar
не являются допустимыми элементами для добавления в ContentValues
. Я считаю, что наиболее эффективным форматом является преобразование Date
в миллисекунды ( getTime ()
) и сохранение его в столбце INTEGER
.