当我在控制台上输出以下代码时,我会得到"年龄错误"一行后跟一个' 0' (当我输入狗的年龄为-10时)。我只想表现出“年龄错误”#39;线。
class Program
{
static void Main()
{
Animal dog = new Animal();
dog.Age = -10;
Console.WriteLine(dog.Age);
}
}
class Animal
{
private int age;
private string color;
public int Age
{
get
{
return age;
}
set
{
if (value < 0)
{
Console.WriteLine("Age is wrong");
}
else
{
age = value;
}
}
}
}
答案 0 :(得分:1)
只有在不是零的情况下记录年龄是你想要的,这就是你应该做的:
if(dog.Age != 0)
{
Console.WriteLine(dog.Age);
}
答案 1 :(得分:1)
您的Program
班级不知道如何检测年龄错误 - 所以它只输出当前年龄值(0)。
你可以有一个返回布尔值的方法,指示设置年龄是否成功:
public int Age { get { return age; } } // no setter
public bool SetAge(int newAge)
{
if (newAge < 0)
{
Console.WriteLine("Wrong age: " + newAge);
return false;
}
age = newAge;
return true;
}
....
if (dog.SetAge(-10))
{
Console.WriteLine("Age successfully set to " + dog.Age);
}
或者您可以依赖异常处理:
public int Age
{
get { return age; }
set
{
if (value < 0) throw new Exception("Invalid age: " + value);
age = value;
}
}
...
try
{
dog.Age = -10;
Console.WriteLine(dog.Age);
}
catch (Exception ex)
{
Console.WriteLine("Error setting age: " + ex.Message);
}
答案 2 :(得分:0)
由于您已经在属性的setter中写入控制台,因此您只需将所有写入移动到setter块中即可。例如:
class Program
{
static void Main()
{
Animal dog = new Animal();
dog.Age = -10;
}
}
class Animal
{
private int age;
private string color;
public int Age
{
get
{
return age;
}
set
{
if (value < 0)
{
Console.WriteLine("Age is wrong");
}
else
{
age = value;
Console.WriteLine(age);
}
}
}
}