2011-10-20 37 views
18

Tôi có mã thay thế dấu gạch ngang bằng các chuỗi rỗng trong GUID.Bạn có nên xóa dấu gạch ngang khỏi GUID không?

Replace(System.Guid.NewGuid.ToString, "-", "") 

Điều đó sẽ loại bỏ tính duy nhất của guid?

Cũng ai đó cũng có thể xác nhận điều này?

Chúng tôi đang lưu trữ GUID trong cơ sở dữ liệu của chúng tôi dưới dạng char (32). Có được không? Bởi vì chúng tôi có người dùng quốc tế trong múi giờ khác nhau, chúng tôi lo ngại rằng độ dài ký tự có thể vượt quá 32. Cảm ơn.

+11

Cũng giống như vậy, bạn có biết rằng thay vì thay thế '-' char, bạn sử dụng ToString of the Guid? Đơn giản chỉ cần sử dụng định dạng N: System.Guid.NewGuid.ToString ("N") –

Trả lời

23

Không, tính duy nhất của Guid được đảm bảo.
Dấu gạch ngang chỉ dành cho khả năng đọc: nội bộ Hướng dẫn được tạo thành từ 16 byte.
Bạn có thể xem MicrosoftWikipedia để biết thêm chi tiết.
Hãy xem nhà xây dựng quá:

public Guid(int a, short b, short c, byte[] d); 
public Guid(int a, short b, short c, byte d, 
      byte e, byte f, byte g, byte h, 
      byte i, byte 
public Guid(uint a, ushort b, ushort c, byte d, 
      byte e, byte f, byte g, byte h, 
      byte i, byte j, byte k); 
+3

+1, cho câu trả lời đơn giản –

+0

Cảm ơn bạn đã quay trở lại, chúng tôi đang lưu trữ một Guid trong cơ sở dữ liệu là char (32). Điều đó có thể xảy ra do trang web quốc tế hoặc múi giờ khác nhau có thể độ dài ký tự vượt quá kích thước 32 không? – Salman

50

Các dấu gạch ngang luôn ở cùng một chỗ, vì vậy không, nó sẽ không làm giảm sự độc đáo.

System.Guid.NewGuid().ToString("N"); 

sẽ tạo ra một GUID không dấu gạch ngang, như trong này documentation

+0

+1 để dạy OP cú pháp mới này :) – Marco

+0

Đẹp, rất rất đẹp. – fuzz

4

Các dấu gạch ngang không nằm trong guid riêng của mình. Họ chỉ là một phần của một đại diện chung của guids. Vì vậy, việc xóa sẽ không thay đổi chính giá trị Guid.

Các vấn đề liên quan