c#中產生GUID的方法

來源:互聯網
上載者:User

在c#中如何產生GUID呢?下面的方法希望可以為您解答。

1. 一個GUID為一個128位的整數(16位元組),在使用唯一識別碼的情況下,你可以在所有電腦和網路之間使用這一整數。

2. GUID 的格式為“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每個 x 是 0-9 或 a-f 範圍內的一個十六進位的數字。例如:337c7f2b-7a34-4f50-9141-bab9e6478cc8 即為有效 GUID 值。

3. 世界上的任何兩台電腦都不會產生重複的 GUID 值。GUID 主要用於在擁有多個節點、多台電腦的網路或系統中,分配必須具有唯一性的標識符。

4. 在 Windows 平台上,GUID 應用非常廣泛:註冊表、類及介面標識、資料庫、甚至自動產生的機器名、目錄名等。

以下的C#命令列程式說明這一使用過程: 

using System;

namespace DisplayGUID {

class GuidExample {

static void Main(string[] args) {

GenerateGUID();

}

static void GenerateGUID() {

Console.WriteLine("GUID: " + System.Guid.NewGuid().ToString());

} } }

下面為這一程式的輸出:(雖然不同系統之間的GUID是變化的。)

GUID: 9245fe4a-d402-451c-b9ed-9c1a04247482

一個GUID可以在後台資料庫中操作一個主鍵。以下代碼使用一個GUID在一個後台資料庫中儲存資訊,這一資料庫包含以下的列:

pk_guid—uniqueidentifier資料類型

name—nvarchar資料類型

這樣出現一個包含文字框的簡單Windows表單。當選擇按鈕時,文字框中的資料被插入到資料庫中。通過程式碼可以產生一個GUID並儲存在其它列中: 

using System;

using System.Drawing;

using System.Collections;

using System.ComponentModel;

using System.Windows.Forms;

using System.Data;

using Microsoft.ApplicationBlocks.Data;

namespace GuidDBExampleCSharp {

public class frmBuilderTest : Form {

private Label lblName;

private TextBox txtName;

private Button btnInsert;

private Container components = null;

public frmBuilderTest() {

InitializeComponent();

}

static void Main() {

Application.Run(new frmBuilderTest());

}

private string GenerateGUID() {

return System.Guid.NewGuid().ToString();

}

private void btnInsert_Click(object sender, System.EventArgs e) {

string cs = "server=(local);Initial Catalog=Northwind;Integrated

Security=SSPI";

using ( SqlConnection conn = new SqlConnection(cs) ) {

try {

string sqlInsert = "INSERT INTO dbo.tblBuilderTest (pk_guid, [name]) VALUES ('"

+ System.Guid.NewGuid().ToString() + "', '" + txtName.Text + "')";

conn.Open();

SqlHelper.ExecuteNonQuery(conn, CommandType.Text, sqlInsert);

} catch(Exception ex) {

System.Console.Write("Error: " + ex.Message);

} } } } }

另一個GUID程式將一個唯一的標識符分配給一個.NET類或者介面,也就是說,GUID作為一個屬性被分配給類或者介面。可以使用標準屬性文法來實現這一過程:

我們可以擴充第一個範例來分配一個GUID。System.Runtime.InteropServices空間名稱必須被引用來使用GUID屬性。以下C#代碼實現了這一過程: 

using System;

using System.Runtime.InteropServices;

namespace DisplayGUID {

[Guid("9245fe4a-d402-451c-b9ed-9c1a04247482")]

class GuidExample {

static void Main(string[] args) {

GenerateGUID();

}

static void GenerateGUID() {

Console.WriteLine("GUID: " + System.Guid.NewGuid().ToString());

} } }

格式說明符

 

N 32位:

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

如:e92b8e30a6e541f6a6b9188230a23dd2

D 由連字號分隔的32位元字:                                    

xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

如:e92b8e30-a6e5-41f6-a6b9-188230a23dd2

B 括在大括弧中、由連字號分隔的32位元字:      

{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}

如:{e92b8e30-a6e5-41f6-a6b9-188230a23dd2}

P 括在圓括弧中、由連字號分隔的32位元字:        

(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)

如:(e92b8e30-a6e5-41f6-a6b9-188230a23dd2)

明白了嗎?

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.