【发布时间】:2011-01-21 14:15:08
【问题描述】:
我们结构的一个字段是Guid 类型。如何为其生成有效值?
【问题讨论】:
我们结构的一个字段是Guid 类型。如何为其生成有效值?
【问题讨论】:
Guid id = Guid.NewGuid();
【讨论】:
Guid.NewGuid() 创建一个新的随机 guid。
【讨论】:
Guid.NewGuid() 将创建一个
【讨论】:
有两种方法
var guid = Guid.NewGuid();
或
var guid = Guid.NewGuid().ToString();
都使用 Guid 类,第一个创建 Guid 对象,第二个创建 Guid 字符串。
【讨论】:
var guid = Guid.NewGuid().ToString() 只是把它变成一个字符串。
var guid = new Guid();
嘿,它是一个“有效的”,虽然不是很有用,Guid。
(如果您不知道,则 guid 全部为零。有时在您不想使用可为空的 Guid 的情况下,这需要指示没有 guid)
【讨论】:
var guid = new Guid(new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, });
System.Guid desiredGuid = System.Guid.NewGuid();
【讨论】:
创建一个像00000000-0000-0000-0000-000000000000 这样的“空”全0 guid。
var makeAllZeroGuID = new System.Guid();
或
var makeAllZeroGuID = System.Guid.Empty;
创建一个具有唯一值的实际 guid,这可能是您想要的。
var uniqueGuID = System.Guid.NewGuid();
【讨论】:
如果你想创建一个“想要的”Guid,你可以这样做
var tempGuid = Guid.Parse("<guidValue>");
<guidValue> 类似于 1A3B944E-3632-467B-A53A-206305310BAE。
【讨论】:
如果你在Reflection C#中使用这个,你可以从property属性中获取guid,如下所示
var propertyAttributes= property.GetCustomAttributes();
foreach(var attribute in propertyAttributes)
{
var myguid= Guid.Parse(attribute.Id.ToString());
}
【讨论】:
还有 ShortGuid - C# 中一个更短且对 url 友好的 GUID 类。它是 以Nuget 的形式提供。更多信息here。
PM> Install-Package CSharpVitamins.ShortGuid
用法:
Guid guid = Guid.NewGuid();
ShortGuid sguid1 = guid; // implicitly cast the guid as a shortguid
Console.WriteLine(sguid1);
Console.WriteLine(sguid1.Guid);
这会生成一个新的 guid,使用该 guid 创建一个 ShortGuid,并在控制台中显示两个等效值。结果大致如下:
ShortGuid: FEx1sZbSD0ugmgMAF_RGHw
Guid: b1754c14-d296-4b0f-a09a-030017f4461f
【讨论】:
这真的很容易。 .Net 框架提供了一个内置函数来创建和解析 GUIDS。这在 System 命名空间和静态 Guid 类中可用。
要创建 GUID,只需使用以下代码:
var newGuid = System.Guid.NewGuid();
要将 GUID 字符串解析为 GUID,请使用以下代码:
var parsedGuid = System.Guid.Parse(guidString);
如果您只是想创建一个新指南并在您的应用程序中使用它,只需使用在线online GUID Generator 工具之一为自己创建一个新指南。
【讨论】:
// Create and display the value of two GUIDs.
Guid g = Guid.NewGuid();
Console.WriteLine(g);
Console.WriteLine(Guid.NewGuid());
// This code example produces a result similar to the following:
// 0f8fad5b-d9cb-469f-a165-70867728950e
// 7c9e6679-7425-40de-944b-e07fc1f90ae7
【讨论】: