c# - 如何防止用户错误地初始化变量?

标签 c# visual-studio-2010

我正在研究一个名为 PByte 的类,它应该代表一个介于 32 和 126 之间的 int 值。(PByte = Printable Byte。) 现在我想防止类的用户错误地初始化一个对象,但我不想抛出异常,我只是希望 Visual Studio 不编译,就像你尝试这样做时发生的那样:byte b = 256;

sealed class PByte : IEquatable<PByte>, IComparable, IComparable<PByte>
{
    public PByte(int value)
    {
        /* if (value < 32 || value > 126)
            throw new ArgumentException("\"" + value + "\" is not a valid PByte-value"); */ 
        this._value = value;
    }

[...]

我也实现了这个:

[...] 

    public static implicit operator PByte(int value)
    {
    /*  if (value < 32 || value > 126)
            throw new ArgumentException("\"" + value + "\" is not a valid PByte-value"); */
        return new PByte(value);
    }
}

所以这也应该是不可能的: PByte p = 2000;

最佳答案

如果不使用代码契约,则无法在编译时强制执行。即便如此,我认为代码契约只会产生警告,并且通常会将问题的所有权归于调用范围。

关于c# - 如何防止用户错误地初始化变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11851762/

相关文章:

c# - ASP.NET 路由在 IIS6 中不起作用

c++ - FindContours 如何循环遍历图像? OpenCV 2.3

c - Visual Studio 2010 C 项目 - 作为服务安装

c++ - 将带有 C header 的文件夹转换为带有 C++ header 的文件夹的最简单方法是什么?

c# - VS2017 .NET Standard 库中的单元测试内部方法

c# - 取消行命令不适用于 GridView

c# - 如何检测单击 Windows 窗体中的一行

c# - 如何确定已安装字体的操作系统文件名?

visual-studio-2010 - 基于非空条件的 SSRS 求和

c# - 通过 id 获取列表项