gpt4 book ai didi

c# - 有没有一种方法可以使用 Visual Studio 2022 在编译时通过转换检查在 C# 中创建自定义整数类型?

转载 作者:行者123 更新时间:2023-12-05 03:16:19 26 4
gpt4 key购买 nike

我正在使用 Visual Studio 2022,并希望创建需要限制为特定值的各种类型的数据。具体来说,我正在为升、pH 和其他与液体相关的东西制作类型。为此,我希望创建自定义类型,以便在我在 VS2022 中键入代码时进行检查,类似于当您尝试使用 C# 需要 uint 的负整数或尝试使用 (uint)-1 给你一个错误。

我已经尝试创建一个转换这些值的结构,但这只在运行时检查,这意味着我必须先运行我的代码,然后才能捕获到从负值转换并显示错误.

以下结构未进行静态检查以进行转换。

public struct liters {
private readonly double v;

public liters(double v) {
if (v is < 0) { throw new ArgumentOutOfRangeException(nameof(v)); }
this.v = v;
}

public static implicit operator liters(double v) { return new liters(v); }
public static implicit operator double(liters liters) { return liters.v; }
}

最佳答案

您需要查看 .NET 编译器平台 (Roslyn) 和自定义 code analyzers .这是自定义编译时检查的主要工具,尽管编写一个工具并非易事。

在您的情况下,您可以尝试为强制转换表达式编写分析器,它将检查发生强制转换的目标类型和文字。

一些有用的链接:

关于c# - 有没有一种方法可以使用 Visual Studio 2022 在编译时通过转换检查在 C# 中创建自定义整数类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74704801/

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