В Java все находится в форме класса.
Если вы хотите использовать любой объект, тогда у вас есть две фазы:
Пример:
Object a;
a=new Object();
То же самое для концепции массива
Item i[]=new Item[5];
i[0]=new Item();
Если вы не дают секцию инициализации, тогда возникает NullpointerException
.
Должно быть возможно создать последовательный GUID в c# или vb.net с помощью вызова API UuidCreateSequential. Объявление API (C#) ниже было взято от Pinvoke.net , где можно также найти полный пример того, как вызвать функцию.
[DllImport("rpcrt4.dll", SetLastError=true)]
static extern int UuidCreateSequential(out Guid guid);
статья MSDN, связанная с функцией UuidCreateSequential, может быть найдена здесь , который включает предпосылки для использования.
Unfortunatley, нет нет.NET, эквивалентной newsequentialid()
. Вы могли продолжить использовать Расческу. У меня на самом деле есть реализация C# Расчески где-нибудь... Я буду видеть, могу ли я вскопать его.
Возможно, простой способ определить порядок, в котором были добавлены строки, будет состоять в том, чтобы добавить столбец IDENTITY к таблице, избегая потребности поддерживать Ваши ГУИДЫ В ПОРЯДКЕ и следовательно избегая хита производительности поддержания кластерного индекса на столбце GUID.
я не могу не задаться вопросом, как поддержание в порядке этих строк помогает Вам при отладке. Вы могли развернуть это немного?
Ключевая проблема знает то, что последнее значение было в приложении.NET. SQL Server отслеживает это для Вас. Необходимо будет держать последнее значение сами и использовать конструктора Guid с массивом байтов, содержащим следующее значение. Конечно, на распределенном приложении это, вероятно, не собирается помогать, и Вам, вероятно, придется использовать рандомизированные Гуиды. (Не то, чтобы я вижу что-то не так с этим.)
Я был выводом, чтобы полагать, что случайные Гуиды могут быть выгодны для производительности в некоторых вариантах использования. По-видимому, вставка в случайные страницы может избежать конкуренции, которая иначе произошла бы на странице конца, когда несколько человек пытаются вставить одновременно.
предложения John's PInvoke являются, вероятно, самыми близкими к версии SQL, но документы UUidCreateSequential указывают, что Вы не должны использовать ее для идентификации объекта, что это строго локально для машины, генерирующей Гуид.
я измерил бы фактический уровень варианта использования, пораженный реалистическими данными в реалистических количествах, прежде чем я исследовал последовательное поколение Гуида дальше.
Вот код C # для генерации COMB GUID.
byte[] guidArray = System.Guid.NewGuid().ToByteArray();
DateTime baseDate = new DateTime(1900, 1, 1);
DateTime now = DateTime.Now;
// Get the days and milliseconds which will be used to build the byte string
TimeSpan days = new TimeSpan(now.Ticks - baseDate.Ticks);
TimeSpan msecs = new TimeSpan(now.Ticks - (new DateTime(now.Year, now.Month, now.Day).Ticks));
// Convert to a byte array
// Note that SQL Server is accurate to 1/300th of a millisecond so we divide by 3.333333
byte[] daysArray = BitConverter.GetBytes(days.Days);
byte[] msecsArray = BitConverter.GetBytes((long)(msecs.TotalMilliseconds / 3.333333));
// Reverse the bytes to match SQL Servers ordering
Array.Reverse(daysArray);
Array.Reverse(msecsArray);
// Copy the bytes into the guid
Array.Copy(daysArray, daysArray.Length - 2, guidArray, guidArray.Length - 6, 2);
Array.Copy(msecsArray, msecsArray.Length - 4, guidArray, guidArray.Length - 4, 4);
return new System.Guid(guidArray);