gpt4 book ai didi

c# - 在编译时生成一个 Guid

转载 作者:行者123 更新时间:2023-11-30 19:10:53 25 4
gpt4 key购买 nike

我正在尝试生成我将使用的常量值,如下所示:

public class Foo()
{
public const String ExtensionKey = Guid.NewGuid().ToString();
public int ID { get; set; }
}

编译器抛出错误:

分配给“Foo.ExtensionKey”的表达式必须是常量

我知道不可能在编译时执行方法(构造函数或类型初始化程序)。我正在寻找一种解决方法,以将随机生成的 Guid 分配给不同类的不同 ExtensionKey 常量。

编辑:

目的是为每种类型生成一个 UNIQUE Guid。所有对象实例的 Guid 值必须相同,并且在应用程序运行时必须相同。这是 Const 的行为,我正在寻找一种方法来尊重它。

最佳答案

(这个答案的大部分是从对问题的评论“提升”而来的。)

在 Visual Studio 中,您可以选择“工具”-“创建 GUID”。或者在 Windows PowerShell 中,您可以说 [Guid]::NewGuid().ToString()。这将为您提供一个 Guid。然后,您可以使该特定 Guid 的字符串表示形式成为您的 string 常量。

public const string ExtensionKey = "2f07b447-f1ba-418b-8065-5571567e63f6";

当然,Guid 是固定的。标记为 const 的字段始终是 static(但您不能提供 static 关键字;它是隐含的)。

如果要有Guid类型的字段,那么在C#中不能声明为const。然后你会这样做:

public static readonly Guid ExtensionKey = new Guid("2f07b447-f1ba-418b-8065-5571567e63f6");

readonly 表示该字段只能从同一类的(static)构造函数更改(派生类的构造函数是不行的) .

关于c# - 在编译时生成一个 Guid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14536254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com