sunny~晴 2024-03-16 10:47 采纳率: 80%
浏览 1
已结题

C# 如何限制类的有参构造器构造参数?

本人自学C#,现主用于CAD二次开发插件(计算机辅助绘图)
由于用插件CAD绘图中需要进行大量多次运算,主要是求点位置和线的三角函数
而多次运算无理数每次都会导致无理数精度损失
因此想要设计一个分数类来用于无理数计算,再最后用到数据时才把分数转换成双精度无理数
但是我不知道如何限制有参构造器分母 != 0;如下

internal class FracT
{
    int f分子;
    int f分母;

    public FracT(int f分子, int f分母)
    {
        this.F分子 = f分子;
        this.F分母 = f分母;
    }
}

求各位给各解决方案

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-03-16 10:47
    关注

    引自免费微信小程序:皆我百晓生

    为了确保在创建 FracT 类实例时分母不为零,您可以对构造函数进行条件检查,并在分母为零的情况下抛出异常。以下是添加了该检查的类定义:

    internal class FracT
    {
        public int 分子 { get; private set; }
        public int 分母 { get; private set; }
    
        public FracT(int 分子, int 分母)
        {
            if (分母 == 0)
            {
                throw new ArgumentException("分母不能为零", nameof(分母));
            }
    
            this.分子 = 分子;
            this.分母 = 分母;
        }
    }
    

    在此代码中,我们首先检查传入构造函数的 分母 参数是否为零。如果分母是零,则抛出一个 ArgumentException 异常,并指明参数名称和错误描述。这样,在尝试创建一个非法分数(即分母为零)时,程序会立即停止并给出明确的错误信息。同时,将成员变量设为私有,并通过属性公开它们,以提高封装性。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月24日
  • 已采纳回答 3月16日
  • 创建了问题 3月16日