文本框中的唯一数字生成

时间:2013-11-25 08:34:39

标签: c# wpf

我是新人和C#。我想在文本框中自动生成一个唯一的数字,我可以将其用作进行资产注册的表单的参考编号。此参考编号将用作注册的每个资产的唯一标识符,并且还会提供给资产所有者以供参考。

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

您可以使用Guid。

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

但请注意。真正独特的数字生成是不可能的。 还有其他方法,如Random

答案 2 :(得分: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

*/

答案 3 :(得分:0)

您可以将TimeStamp与新GUID一起使用。

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

如果你真的需要一个数字的字符串作为唯一键,那么你只能使用时间戳和下面的stratergy.then它将在任何给定的时间内唯一,Lock以确保没有两个线程同时运行你的代码。 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);
    }