2014-05-15 42 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

相關問題