c# - 当我使用它时,我的 IF 属性在我的类(class)中被忽略了

标签 c# class constructor properties

public class Irritante : Child   
{
    /*Fields*/
    private int ir_numeroBirras;
    private double ir_mediaBirras; 

    /*Properties*/
    public int NumeroBirras
    {
        get { return ir_numeroBirras; }
        set { if (value > 0) ir_numeroBirras = value; }
    }
    public double MediaBirras
    {
        get { return ir_mediaBirras; }
        set { ir_mediaBirras = value; }
    }
    //Constructor
    public Irritante(string nome, int idade, int numBirras, double mediaDasBirras) : base(nome, idade)
    {
        NumeroBirras = numBirras;
        ir_mediaBirras = mediaDasBirras;
    }

当我尝试使用具有属性 NumeroBirras 的构造函数 Irritante 时,它忽略了 if(value>0) 这意味着我仍然可以使用客户端代码向该字段添加 0,但我不应该这样做,有什么提示吗?我到处都找不到它

最佳答案

ir_numeroBirras 的默认值为 0。您不能使用该属性放置 0。但是,如果您使用 0 作为参数值进行测试,您就会被默认值所愚弄。

如果你在谈论你不应该在 Irritante ctor 的参数中放置一个 0,那是完全不同的

public Irritante(string name, int idade, int numBirras, double mediaDasBirras) : base(nome, idade) 
{
   if(numBirras < 1) throw new ArgumentOutOfRangeException(nameof(numBirras), "Hey, you can't drink 0 beers");
   ir_numeroBirras = numBirras;
   ir_mediaBirras = mediaDasBirras;
}

关于c# - 当我使用它时,我的 IF 属性在我的类(class)中被忽略了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65541006/

相关文章:

c# - 错误 : The name 'ConfigurationManager' does not exist in the current context

c# - 绑定(bind)会在 WPF 中造成内存泄漏吗?

c# - 在文本文件的顶部添加一行

java - 如何将其变为 OOP

c# - 如何遍历类的属性?

c++ - 您可以在 C++ 中显式调用实例化的对象类构造函数吗?

javascript - new vs object create给出不同的结果OO javascript

c# - 是否应该避免使用 LINQ,因为它很慢?

javascript - PHP 相当于 JavaScript "this"关键字,特别是在对象内?

c++ - 类成员初始化C++