慕勒4047504
2019-07-13 18:16
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Youeryuan
{
class Program
{
static void Main(string[] args)
{
Child c1 = new Child("晓强", 3);
Growth(c1);
Growth(c1.Age);
Console.ReadLine();
}
static void Growth(Child chlid)
{
chlid.Age++;
Console.WriteLine("我今年"+chlid.Age+"岁了1!");
// Console.WriteLine("我又长大了一岁!");
}
static void Growth (int age)
{
age++;
Console.WriteLine("我今年{0}岁了2!", age);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ceshi1
{
class Program
{
class Child
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
private int age;
public int Age
{
get { return age; }
set { age = value; }
}
public Child(string name, int age)
{
this.name = name;
this.age = age;
}
}
static void Main(string[] args)
{
Child c1 = new Child("晓强", 3);
Growth(c1);
Growth(c1.Age);
Console.ReadLine();
}
static void Growth(Child chlid)
{
chlid.Age++;
Console.WriteLine("我今年" + chlid.Age + "岁了1!");
// Console.WriteLine("我又长大了一岁!");
}
static void Growth(int age)
{
age++;
Console.WriteLine("我今年{0}岁了2!", age);
}
}
}
应该是构造方法没有给age赋值的错误,main方法中实例化Child类对象c1时传的参数3到构造方法为age赋值的代码错误,建议检查构造方法,如果没有给age赋值,则默认int型数据初始为0,也就会出现输出为
我今年1岁了!
我今年2岁了!
你的Main方法和两个Growth方法平级的,也就是说,程序开始时直接进入 Growth(Child child) , Child.Age默认取0,child.Age++ 后得1,这里输出了“我今年1岁了1!”。接下来上面的 Growth(c1.Age) 读取到的值为1,再传到Growth(int age)中,age读取到的值为1,age++ 得到2,故,这里输出“我今年2岁了2!”
望指点
应该是你的构造方法中没有给年龄Age初始化,导致c1对象Age取默认值0
static void Growth (int age)
{
age++;
Console.WriteLine("我今年{0}岁了2!", age);
}
上面代码你输出的age是这个方法内的值,在这个方法里age的初始值是零,你的代码age++,输出的结果自然就1啦
首先你需要把两个输出语句中的child.Age和age都改成c1.Age,因为是输出对象的年龄属性必须用 对象.属性 这种方式输出.
其次你需要把两条输出语句放入主方法也就是Main函数内部执行,因为对象c1是在Main函数内部实例化的。
最后加油加油加油
用C#实现封装
78012 学习 · 182 问题
相似问题
回答 3
回答 4
回答 3
回答 2
回答 1