gpt4 book ai didi

c# - 在 C# 中的编译时检查字符串格式

转载 作者:太空狗 更新时间:2023-10-29 21:03:46 24 4
gpt4 key购买 nike

在我的代码中有几个字符串用作访问资源的键。这些 key 具有特定格式,例如

string key = "ABC123";

目前,所有这些键都存储为字符串,但我想让事情变得更加健壮和类型安全。理想情况下,我想在编译时检查字符串的格式是否正确。

下一阶段是创建一个从字符串初始化的 ResourceKey 类。然后我可以在运行时检查字符串的格式,例如

ResourceKey key = "ABC123";

其中 ResourceKey 定义为:

using System.Diagnostics;
using System.Text.RegularExpressions;

class ResourceKey
{
public string Key { get; set; }

public static implicit operator ResourceKey (string s)
{
Debug.Assert(Regex.IsMatch(s, @"^[A-Z]{3}[0-9]{3}$"));
return new ResourceKey () { Key = s };
}
}

我真正想做的是有一种编译时断言,这样如果有人试图使用无效 key ,程序就无法构建。例如

ResourceKey k1 = "ABC123"; // compiles
ResourceKey k2 = "DEF456"; // compiles
ResourceKey k3 = "hello world"; // error at compile time

有什么办法可以实现吗?

谢谢

最佳答案

您可以通过单元测试检查这些值。我的一位同事不得不在一个项目中做类似的事情,在这个项目中我们需要确保特定命名空间中的所有类都应用了特定的属性。

使用您的构建运行单元测试(无论如何您都这样做对吗?:) 或作为集成构建的一部分。这将使您的源代码更清晰,并且您不必引入执行断言的代码。

关于c# - 在 C# 中的编译时检查字符串格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/506908/

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