.NET, C# ve Visual Basic’te genel olarak benzersiz tanımlayıcıyı biçimlendirin

Womanne

Member
GUID’ler (Global Unique Identifiers) artık arayüzleri ve sınıfları tanımlamak için .NET Framework’te kullanılmasa da, bu 128 bitlik sayılar, örneğin dağıtılmış veri kayıtlarının benzersiz tanımlanması veya l ‘benzersiz tanımlama için hala birçok uygulama alanına sahiptir. bir kullanıcı oturumunun tanımlanması . Ancak, GUID’leri veritabanı tablolarında birincil anahtar olarak kullanırken performans ve bellek tüketimi açısından dikkatli olunmalıdır!


Sınıf, .NET Framework’te yerleşiktir System.Guid. Son zamanlarda, müşterilerimden birinin projesinde, bir GUID’in kaç karakter içerdiği tartışması ortaya çıktı. Bilgisayar biliminde sıklıkla olduğu gibi, doğru cevap şudur: duruma göre değişir!

Bir GUID için birkaç biçim vardır, bu nedenle 32 ila 68 karakter kullanın:

var g = Guid.NewGuid();
Console.WriteLine(g.ToString()); // => 36 Zeichen mit Bindestrichen: 12345678-1234-1234-1234-123456789abc
Console.WriteLine(g.ToString("D")); // wie to String()
Console.WriteLine(g.ToString("N")); // => 32 Zeichen, ohne Bindestriche: 12345678123412341234123456789abc
Console.WriteLine(g.ToString("B")); // => 38 Zeichen mit Bindestrichen und geschweiften Klammern: {12345678-1234-1234-1234-123456789abc}
Console.WriteLine(g.ToString("P")); // => 38 Zeichen mit Bindestrichen und runde Klammern(12345678-1234-1234-1234-123456789abc)
Console.WriteLine(g.ToString("X")); // => 68 Zeichen, Hexadecimal und geschweifte Klammern: {0x12345678,0x1234,0x1234,{0x12,0x34,0x12,0x34,0x56,0x78,0x9a,0xbc}}

GUID’yi bir karakter dizisi yerine bir tamsayı olarak ele almak da mantıklı olacaktır. Ancak, .NET Framework’teki standart sınıfların hiçbiri (Sistem.Int32, System.Int64) 128 bit kayıt yapar. Bunu yalnızca .NET 4.0’da tanıtılan sınıf yapabilir BüyükTamsayı mecliste System.Numerics.dll. Bir dönüştürme yöntemi rehber İLE BigInteger, .NET ile tümleşik değildir. Aşağıdaki liste, sınıf için bir genişletme yöntemini gösterir. rehberSonra BüyükTamsayı dönüştürüldü.

/// <summary>
/// Erweiterungsmethode für die Klasse Guid, die nach BigInteger konvertiert.
/// Erfordert Referenz auf System.Numerics
/// </summary>
/// <param name="guid">GUID</param>
/// <returns>Zahl als BigInteger</returns>
public static System.Numerics.BigInteger ToBigInteger(this Guid guid)
{
var s = guid.ToString("N"); // 32 Zeichen, ohne Bindestriche
var result = System.Numerics.BigInteger.Parse(s, System.Globalization.NumberStyles.AllowHexSpecifier);
result = result > 0 ? result : -result;
if (result < int.MaxValue)
{
result = result + int.MaxValue;
}
return result;
}
}

Bu uzatma yöntemi şu şekilde kullanılabilir:

var g = Guid.NewGuid();
System.Numerics.BigInteger bi = g.ToBigInteger();
Console.WriteLine(bi);


()





Haberin Sonu
 
Üst