如何使用創建GUID() 於 C# 並實作在Winform中

如何使用創建GUID() 於 C# 並實作在Winform/WPF中

何謂GUID?全域唯一識別碼?

全域唯一識別碼(英語:Globally Unique Identifier,縮寫:GUID)是一種由演算法生成的唯一標識,通常表示成32個16進位數字(0-9,A-F)組成的字串。我們使用 GUID 是因為它被複製的可能性非常低,因為它是 128 位整數(16 字節),允許在所有數據庫和計算機上使用 GUID 而不會發生數據衝突。

.NET Framework 中的哪個類用於生成 Guid?

透過C#,你可以很容易產生一組GUID()編碼,如下透過執行GUID NewGUID()會立刻產出一組GUID編碼。

注:System.GUID 類表示 .NET Framework 中的 GUID

Fig1. GUID功能描述

必須引用哪個命名空間才能使用 GUID 屬性?

必須引用 System 命名空間才能使用 GUID 屬性。

GUID 是如何表示的?

以下是 GUID 的示例。請注意,GUID 通常為 128 位長,並以十六進製表示。

09a55934- 6d6f- 4ef0- b4bb - e8b8d428a1e8

GUID 組織為定義明確的 32 個十六進制數字序列,這些數字分組為 8-4-4-4-12 。因此,您最多可以擁有 2^128 個 GUID。

如何在 C# 中創建 GUID?

下圖我透過執行程式碼的方式展示一下如何使用該功能,並印出所產出的GUID。

using System;

namespace ConsoleApplication1
{
    internal class Program
    {
        public static void Main(string[] args)
        {
            Guid g = Guid.NewGuid();
            Console.WriteLine(g);
            //09a55934-6d6f-4ef0-a38f-e8b8d428a1e8
            Console.WriteLine(Guid.NewGuid());
            //02e68442-774f-4cfe-886c-c28a533daa8c
        }
    }
}

如何確認你的字串編碼符合GUID規則呢?

using System;

namespace ConsoleApplication1
{
    internal class Program
    {
        public static void Main(string[] args)
        {
            Guid g = Guid.NewGuid();
            Console.WriteLine(g);
            Console.WriteLine(Guid.NewGuid());
            bool isGUID = Guid.TryParse(g.ToString(), out _);
            Console.WriteLine($"Is g generated by GUID()? {isGUID} ");
            
            var testGuid = Guid.NewGuid();
            // Create an array of string representations of the GUID.
            string[] stringGuids = { testGuid.ToString("B"),
                testGuid.ToString("D"),
                testGuid.ToString("X") };

            // Parse each string representation.
            foreach (var stringGuid in stringGuids)
            {
                try
                {
                    Guid newGuid = Guid.Parse(stringGuid);
                    Console.WriteLine($"Converted {stringGuid} to a Guid");
                }
                catch (ArgumentNullException)
                {
                    Console.WriteLine("The string to be parsed is null.");
                }
                catch (FormatException)
                {
                    Console.WriteLine($"Bad format: {stringGuid}");
                }
            }

        }
    }
}

//Output:
//Is g generated by GUID()? True
//Converted {bf773775-bc4f-404f-92bc-36d8c7b9b812} to a Guid
//Converted bf773775-bc4f-404f-92bc-36d8c7b9b812 to a Guid
//Converted {0xbf773775,0xbc4f,0x404f,{0x92,0xbc,0x36,0xd8,0xc7,0xb9,0xb8,0x12}} t
o a Guid

我是如何應用於實作當中呢?

我這邊的實作用例在我視窗當中定義兩個DataGridView,當我左邊的LIST有產生任一節點時,就會自動加載資料並將資料輸入到對應的DataGridView之中,當我輸入時會先複製一份到資料庫之中,輸入資料庫之前針對每一筆加了GUID編碼。

所以當我建立該NODE時,就會去搜尋此NODE上面的GUID編碼,並且用這組編碼來搜尋兩個不同資料庫的TABLE並且顯示在上面。

WinForm
Fig2
Database table from Datagrip
Fig3
Code from Rider(JetBrains)
Fig4

相關連結參考

Posted inC#