【问题标题】:How to make a properly make setter edit class members如何正确地制作 setter 编辑类成员
【发布时间】:2021-11-26 22:41:12
【问题描述】:

我正在尝试为私有成员年龄的公共财产创建一个设置器。它的作用是,如果您尝试输入的年龄小于零,则程序应将其设置为零并为您提供基本信息。然而,这个二传手实际上会让任何负数滑过它。如果您尝试在构造函数中编辑它,setter 甚至不会激活。但是,如果您创建年龄类的实例而不是尝试编辑该实例类,则可以。但是,它会让小于零的数字通过,并发送消息“Viable”,表示它是一个可行的数字。这里是年龄成员、属性、构造函数等所在的 Person 类。

 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;
        }
    }
}

任何帮助将不胜感激。谢谢!

【问题讨论】:

  • 问题是什么?
  • 程序启动时,age总是 >= 0(因为它是零)。测试value 的传入值,而不是age
  • 哦,有道理。非常感谢

标签: c# properties setter


【解决方案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

说明在马克的comment

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    • 1970-01-01
    • 1970-01-01
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    • 2017-09-11
    相关资源
    最近更新 更多