在.Net中,最简单的唯一标识符是什么?

3
所以我有这个。
public class Foo
{
    public int UniqueIdentifier;

    public Foo()
    {
        UniqueIdentifier = ????
    }    
}

如何获得一个完全独特的数字?

谢谢!


2
需要更多的细节:您希望数字有多独特?您需要多少个ID?它可以是递增的(0,1,2,3...)吗?当应用程序关闭并重新打开时,它可以重新开始计数吗?这些ID将在单个机器上创建和使用,还是可以在远程创建(机器/进程之间的通信)? - Lucas
除非您允许任意(即无限)的比例和精度,否则不存在“完全独特的数字”。 - Marc Gravell
2
胡说八道,马克。那12怎么样?12肯定是独一无二的!只有一个数字叫做“十二”。不相信我吗?试着找到另一个等于12但不是12的数字。你做不到,对吧?这是因为12是独一无二的。 :) - Eric Lippert
@Eric... 不是在模算术下... 25 === 12 (mod 13)! :) - Jake
1
与http://xkcd.com/221/中的随机性独特性相同的意义。 - Jon Skeet
3个回答

17
System.Guid  guid = System.Guid.NewGuid();
String id = guid.ToString();

1
你也可以传递一些参数给guid.ToString(),以影响返回的字符串类型。 - John Fisher

2

虽然不是int类型,但通常使用GUIDs创建唯一标识符的方法。您可以使用Guid.NewGuid()来生成一个。

有一些不同的转换方法,包括字节数组和字符串。有关GUID的更多信息,您可以在维基百科上阅读。

祝你好运。


0
使用 Guid 结构体,像这样。
public class Foo
{
    public readonly Guid UniqueIdentifier;

    public Foo()
    {
        UniqueIdentifier = Guid.NewGuid();
    }    
}

HashCode仅仅是一个对象的哈希值,而且并不总是唯一的。有时它是内存地址,有时它是其他东西。但重点是,即使在给定的CLR或Java VM中,它也不能保证是唯一的。 - TheSoftwareJedi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接