【发布时间】: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