2014-05-15 40 views
-5

我每次创建新产品时都需要一个唯一的ID。Guid每次都会生成相同的ID。 C#

我的代码创建相同的Guid(00000000-0000-0000-0000-000000000000)每个项目我将它添加到列表中,并且它不唯一。

你能告诉我,如果我在这段代码中做错了什么,请。这是我的代码。

class Product 
{ 

    private Guid _ID ; 
    private String _Name = string.Empty; 
    private String _Price = string.Empty; 

    public Guid ID 
    { 
     get { return _ID; } 
     set { _ID = value; } 
    } 


    public string Name 
    { 
     get { return (_Name); } 
     set { _Name = value; } 
    } 

    public string Price 
    { 
     get { return (_Price); } 
     set { _Price = value; } 
    } 


    public Product(Guid ID, string Name, string Price) 
    { 
    _ID = ID; 
    _Name = Name; 
    _Price = Price; 
    } 

    public Product() 
    { 
     // TODO: Complete member initialization 
    } 


public static void Main() 

{ 

    List<Product> productList = new List<Product>(); 
    productList.Add(new Product() { Name = "shoe", Price = "80"}); 
    productList.Add(new Product() { Name = "Hand Bag", Price = "180" }); 
    productList.Add(new Product() { Name = "Pen", Price = "8" }); 

    var cheapestItem = (from i in productList orderby i.Price descending select i.Name).Take(1); 
    Console.WriteLine(cheapestItem); 
    Console.ReadLine(); 

}  
+3

它是'GUID'的默认值。这是'Guid.Empty'。从它的[文档](http://msdn.microsoft.com/en-us/library/system.guid.aspx); _值为全零的Guid结构的只读实例._ –

+0

初始化新GUID的位置? – Hassan

+0

为什么会全部倒票?这个问题的题目是值得一个新手的,那又如何?这个问题很明显,所以+1。 – phoog

回答

14

您需要拨打Guid.NewGuid()才能每次创建一个新的唯一GUID。

默认值GuidGuid.Empty,这就是你所看到的(全0)。

2

您没有将Guid传递给您的类构造函数或通过对象初始值设定项。

做:

productList.Add(new Product() { ID = Guid.NewGuid(), Name = "shoe", Price = "80"}); 

字段在类指派的缺省值,00000000-0000-0000-0000-000000000000是的Guid默认值。

既然你有一个类的构造函数,有三个参数,包括 的Guid,您可以使用,如:

productList.Add(new Product(Guid.NewGuid, "shoe", "80")); 
+0

谢谢你的回答。你能告诉我如何将Guid添加到我的类构造函数吗? – Diana

+0

你有一个重载的构造函数来使用Guid,Name和Price,我用代码更新了答案。 – Habib

2

你甚至没有产生Guid,因此它的默认值每time.Use Guid.NewGuid()方法来生成Guid

相关问题