C # làm thế nào để tạo giá trị Guid?


Câu trả lời:


897
Guid id = Guid.NewGuid();

252
Nếu bạn, giống như tôi, phạm sai lầm khi làm (Guid (). ToString ()) mới, bạn sẽ nhận được 0000-00000-00000-00000. Bạn cần làm Guid.NewGuid (). ToString ()
Joao Carlos

12
Bạn có thể quan tâm đến việc định dạng Guid quá msdn.microsoft.com/en-us/l
Library / 97af8hh4 (v = vs.110) .aspx

9
Ít chỉnh sửa, không có chức năng 'toString ()' trên đối tượng Guid, đó là 'ToString ()'
AB


83

Có hai cách

var guid = Guid.NewGuid();

hoặc là

var guid = Guid.NewGuid().ToString();

cả hai đều sử dụng lớp Guid, lớp đầu tiên tạo đối tượng Guid, chuỗi thứ hai là chuỗi Guid.


47
@Justin, đó là một cách để làm điều đó. var guid = Guid.NewGuid().ToString()chỉ cần biến nó thành một chuỗi.
Michael Meadows

@MichaelMeadows Đúng vậy, cái đầu tiên tạo ra một Guid Object mới, cái thứ hai tạo ra một chuỗi.
Justin


34
var guid = new Guid();

Này, nó là "hợp lệ", mặc dù không hữu ích lắm, Guid.

(hướng dẫn là tất cả số không, nếu bạn không biết. Đôi khi, điều này là cần thiết để chỉ ra không có hướng dẫn, trong trường hợp bạn không muốn sử dụng Hướng dẫn không thể hủy bỏ)


Điều đó không tạo ra tất cả số không. Nó tạo ra một Hướng dẫn hợp lệ. Guid.Empty trả về tất cả các số không.
FlavorScape

8
@FlavorScape trước khi bạn thử, tôi đặt cược cho bạn 50 rep (thông qua tiền thưởng) bạn đã sai. Thỏa thuận?

meh, tôi đã nghĩ về Guid.NewGuid (). Tôi thực sự quan tâm để xác minh Guid ()
FlavorScape mới

11
Tôi đánh bại bạn bằng một giải pháp này:var guid = new Guid(new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, });
Jeppe Stig Nielsen

2
Khi bạn phải chuyển một hướng dẫn để viết mã, bạn không sở hữu mà không chấp nhận một hướng dẫn vô giá trị.

26

Để làm cho một hướng dẫn "0" trống rỗng như thế nào 00000000-0000-0000-0000-000000000000.

var makeAllZeroGuID = new System.Guid();

hoặc là

var makeAllZeroGuID = System.Guid.Empty;

Để thực hiện một hướng dẫn thực tế với một giá trị duy nhất, những gì bạn có thể muốn.

var uniqueGuID = System.Guid.NewGuid(); 

21
System.Guid desiredGuid = System.Guid.NewGuid();

Đây dường như là cách mới để làm điều này, ít nhất là vào năm 2012. Tôi dường như không có Guid.NewGuid () vào năm 2015.
Dave Yarwood

2
@DaveYarwood Guid đã ở trong không gian tên Hệ thống trong một thời gian rất dài và là điều mà mọi người khác đang đề cập đến trong các câu trả lời khác (tình cờ là một lớp mới đã có Sử dụng được thêm vào cho Không gian hệ thống trong mẫu bình thường)
Skuld

18

Nếu bạn muốn tạo một Hướng dẫn "mong muốn", bạn có thể làm

var tempGuid = Guid.Parse("<guidValue>");

nơi <guidValue>sẽ là một cái gì đó như thế nào 1A3B944E-3632-467B-A53A-206305310BAE.


2

Ngoài ra còn có ShortGuid - Một lớp GUID ngắn hơn và thân thiện với url trong C #. Nó có sẵn như là một Nuget . Thêm thông tin ở đây .

PM> Install-Package CSharpVitamins.ShortGuid

Sử dụng:

Guid guid = Guid.NewGuid();
ShortGuid sguid1 = guid; // implicitly cast the guid as a shortguid
Console.WriteLine(sguid1);
Console.WriteLine(sguid1.Guid);

Điều này tạo ra một hướng dẫn mới, sử dụng hướng dẫn đó để tạo ShortGuid và hiển thị hai giá trị tương đương trong bảng điều khiển. Kết quả sẽ là một cái gì đó dọc theo dòng:

ShortGuid: FEx1sZbSD0ugmgMAF_RGHw 
Guid:      b1754c14-d296-4b0f-a09a-030017f4461f

0

Nếu bạn đang sử dụng điều này trong Reflection C #, bạn có thể lấy hướng dẫn từ thuộc tính property như sau

var propertyAttributes= property.GetCustomAttributes();
foreach(var attribute in propertyAttributes)
{
  var myguid= Guid.Parse(attribute.Id.ToString());
}


-2
//Retrive your key ID on the bases of GUID 

declare @ID as uniqueidentifier

SET @ID=NEWID()
insert into Sector(Sector,CID)

Values ('Diry7',@ID)


select SECTORID from sector where CID=@ID

có thể được sử dụng xen kẽ SCOPE.IDENTITY ()
sammer

28
C # trông khác rất nhiều so với tôi nhớ.
Archibald
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.