如何正确制作 setter 编辑 class 成员

How to make a properly make setter edit class members

我正在尝试为私人会员年龄public 属性 制作一个setter。它的运行方式是,如果您尝试输入的年龄小于零,则程序应将其设置为零并为您提供基本信息。然而,这个 setter 会让任何负数从字面上溜走。如果您尝试在构造函数中编辑它,setter 甚至不会激活。但是,如果您创建年龄 class 的实例而不是尝试编辑该实例 class,则可以。但是,它会让小于零的数字通过,并发送消息“Viable”,表示它是一个可行的数字。这里是Personclass年龄成员,属性,构造函数等所在的

 namespace HopeThisWorks
 {
     class Person
     {
        private int age;

        public int Age
        {
           get
           {
              return age;
           }
           set
           {
             if(age >= 0)
             {
                 age = value;
                System.Console.WriteLine("Viable");
             }
             else
             {
                 age = 0;
                 System.Console.WriteLine("Not Viable");
             }
          }
       }
       public Person(int age)
       {
           this.age = age;
       }
   }
}

这里是主要方法:

using System;

namespace HopeThisWorks
{
    class Program
    {
        static void Main(string[] args)
        {
            Person p1 = new Person(1);
            p1.Age = -1;
        }
    }
}

如有任何帮助,我们将不胜感激。谢谢!

这是工作内容

using System;

public class Program
{
    public static void Main()
    {
        var p = new Person(-5);
    }
}

class Person
{
    private int _age;
    public int Age
    {
        get {return _age;}
        set
        {
            if (value >= 0)
            {
                _age = value;
                System.Console.WriteLine("Viable");
            }
            else
            {
                _age = 0;
                System.Console.WriteLine("Not Viable");
            }
        }
    }

    public Person(int age)
    {
        Age = age;
    }
}

在这种情况下,结果将 Not Viable 打印出来。

Mark 的 中有解释。