2013-11-25 4 views
2

Я новичок и C#. Я хочу автоматически генерировать уникальный номер внутри текстового поля, которое я могу использовать в качестве ссылочного номера в форме, которая регистрирует активацию. этот ссылочный номер будет использоваться в качестве уникального идентификатора для каждого зарегистрированного актива, а также для владельца актива для справки.Уникальное поколение чисел в текстовом поле

+0

Действительно uniqe номер невозможно – BudBrot

+0

Где вы храните свои активы? Потому что обычно вы будете использовать базу данных, и база данных будет генерировать уникальный идентификатор. Если у вас нет базы данных, вы можете использовать GUID, но это не число, а строка (довольно длинная). – CompuChip

+0

Уникальный в каком контексте? Используйте базу данных и столбец ['Identity'] (http://en.wikipedia.org/wiki/Identity_column). –

ответ

0

Вы можете использовать TimeStamp вместе с новым идентификатором GUID.

string uniqueKey = string.Concat(DateTime.Now.ToString("yyyyMMddHHmmssf"), Guid.NewGuid().ToString()); 

Если вам действительно нужен номер Intead строки в качестве уникального ключа, то вы можете использовать только временную метку с последующим stratergy.then он будет уникальным с любой данный момент времени, блокировка, чтобы гарантировать, что никакие два потока не запустить свой код в то же время. Thread.Sleep, чтобы вы получили два разных раза на десятую часть секунды.

static object lockerObject = new object(); 
static string GetUniqueKey() 
{ 
    lock (lockerObject) 
    { 
     return DateTime.Now.ToString("yyyyMMddHHmmssf"); 
     Thread.Sleep(100); 
    } 
} 

Или я нашел способ сделать это без штампа времени от here следующим образом.

public long GetUniqueKey() 
    { 
     byte[] buffer = Guid.NewGuid().ToByteArray(); 
     return BitConverter.ToInt64(buffer, 0); 
    } 
1

Вы можете использовать Guid.

Guid temp; 
temp = Guid.NewGuid(); 
textBox1.Text = temp.ToString().Replace("-", ""); 

Но имейте в виду. Невозможно создать реальное поколение единичных чисел. Есть и другие способы, как Random класс

1

Считаете ли вы, что с помощью GUID они довольно легко генерируются и являются поистине уникальными?

// This code example demonstrates the Guid.NewGuid() method. 

using System; 

class Sample 
{ 
    public static void Main() 
    { 
    Guid g; 
    // Create and display the value of two GUIDs. 
    g = Guid.NewGuid(); 
    Console.WriteLine(g); 
    Console.WriteLine(Guid.NewGuid()); 
    } 
} 

/* 
This code example produces the following results: 

0f8fad5b-d9cb-469f-a165-70867728950e 
7c9e6679-7425-40de-944b-e07fc1f90ae7 

*/ 
8

Чтобы сделать это, вы можете использовать Guid (глобально уникальный идентификатор) вероятность того, что стоимость нового Guid будет все нули или равна любой другой Guid является очень низким.

public static void Main() 
{ 
    Guid g = Guid.NewGuid(); 
    Console.WriteLine(g);  
} 

Вы найдете больше канд об этом здесь:

http://msdn.microsoft.com/en-us/library/system.guid.newguid(v=vs.110).aspx

Смежные вопросы