如何在 C # 中声明一个常量 Guid?

是否可以在 C # 中声明一个常量 Guid?

我知道我可以声明一个 static readonly Guid,但是有没有一种语法允许我编写 const Guid

57786 次浏览

没有。const修饰符仅适用于“原始”类型(bool、 int、 float、 double、 long、 decal、 short、 byte)和字符串。基本上任何可以声明为文字的东西。

虽然你似乎不能做到这一点,但你可以在任何需要的时候解析它:

const string _myGuidStr = "e6b86ea3-6479-48a2-b8d4-54bd6cbbdbc5";

但是不要使用上面的 guid,因为它只属于我一个人,我首先生成了它,所以我声明对上面这个特定 guid 的所有权!但是我很慷慨——用这个代替(我不喜欢它对我说话的方式,但是当它闭嘴的时候,它是一个很好的指南) : 284c694d-d9cc-446b-9701-b391876c8394

将其声明为 static readonly Guid而不是 const Guid

我是这样做的:

public static class RecordTypeIds
{
public const string USERS_TYPEID = "5C60F693-BEF5-E011-A485-80EE7300C695";
public static Guid Users { get { return new Guid(EntityTypeIds.USERS_TYPEID); } }
}
public static readonly Guid Users = new Guid("5C60F693-BEF5-E011-A485-80EE7300C695");

就是这样。

这取决于您想要一个 const 用于什么。

如果您希望拥有一个可以根据需要重用的已知 GUID,那么上述将 GUID 存储为字符串并根据需要解析为 GUID 的解决方案就可以实现。

如果您需要一个默认参数值,那将无法工作。另一种方法是使用可为空的 Guid,并使用 null 作为常量值。

public void Foo(string aParameter, Guid? anOptionalGuid = null)