这是主程序:
protected void Button1_Click(object sender, EventArgs e)
{
int st_nl;
C31 new_1 = new C31();
C31 new_2 = new C31("王同学", new DateTime(1976, 6, 20), "444544197606203999");
new_1.st_name = "李同学";
new_1.st_csrq = new DateTime(1987, 3, 22);
new_1.st_code = "442251198703220658";
Response.Write("**********第一名学生**********" + "<br/>");
Response.Write("姓名:" + new_1.st_name + "<br/>");
Response.Write("出生日期:" + new_1.st_csrq.ToString("yyyy-MM-dd") + "<br/>");
Response.Write("身份证:" + new_1.st_code + "<br/>");
Response.Write("入学年龄:" + new_1.st_rsnl.ToString() + "<br/>");//
st_nl = new_1.pGet_rsnl(new DateTime(2004, 9, 1));
new_1.Get_Dqnj(st_nl);
Response.Write("2004年9月1日,该学生年龄为:" + st_nl.ToString() + "<br/>");
Response.Write("2004年9月1日,该学生就读年级为:" + new_1.st_dqnj + "<br/>");
Response.Write("**********第二名学生**********" + "<br/>");
Response.Write("姓名:" + new_2.st_name + "<br/>");
Response.Write("出生日期:" + new_2.st_csrq.ToString("yyyy-MM-dd") + "<br/>");
Response.Write("身份证:" + new_2.st_code + "<br/>"); Response.Write("入学年龄:" + new_2.st_rsnl.ToString() + "<br/>");—————————————————— 这一行代码输出入学年龄是0(如果用我自己
照书打的类) st_nl = new_2.pGet_rsnl(new DateTime(2004, 9, 1));
new_2.Get_Dqnj(st_nl);
Response.Write("2004年9月1日,该学生年龄为:" + st_nl.ToString() + "<br/>");
Response.Write("2004年9月1日,该学生就读年级为:" + new_2.st_dqnj + "<br/>");
}
protected void Button1_Click(object sender, EventArgs e)
{
int st_nl;
C31 new_1 = new C31();
C31 new_2 = new C31("王同学", new DateTime(1976, 6, 20), "444544197606203999");
new_1.st_name = "李同学";
new_1.st_csrq = new DateTime(1987, 3, 22);
new_1.st_code = "442251198703220658";
Response.Write("**********第一名学生**********" + "<br/>");
Response.Write("姓名:" + new_1.st_name + "<br/>");
Response.Write("出生日期:" + new_1.st_csrq.ToString("yyyy-MM-dd") + "<br/>");
Response.Write("身份证:" + new_1.st_code + "<br/>");
Response.Write("入学年龄:" + new_1.st_rsnl.ToString() + "<br/>");//
st_nl = new_1.pGet_rsnl(new DateTime(2004, 9, 1));
new_1.Get_Dqnj(st_nl);
Response.Write("2004年9月1日,该学生年龄为:" + st_nl.ToString() + "<br/>");
Response.Write("2004年9月1日,该学生就读年级为:" + new_1.st_dqnj + "<br/>");
Response.Write("**********第二名学生**********" + "<br/>");
Response.Write("姓名:" + new_2.st_name + "<br/>");
Response.Write("出生日期:" + new_2.st_csrq.ToString("yyyy-MM-dd") + "<br/>");
Response.Write("身份证:" + new_2.st_code + "<br/>"); Response.Write("入学年龄:" + new_2.st_rsnl.ToString() + "<br/>");—————————————————— 这一行代码输出入学年龄是0(如果用我自己
照书打的类) st_nl = new_2.pGet_rsnl(new DateTime(2004, 9, 1));
new_2.Get_Dqnj(st_nl);
Response.Write("2004年9月1日,该学生年龄为:" + st_nl.ToString() + "<br/>");
Response.Write("2004年9月1日,该学生就读年级为:" + new_2.st_dqnj + "<br/>");
}
public class C31
{
private DateTime _st_csrq;
private int _st_rsnl;
private string _st_dqjd;
public C31()
{
}
public C31 (string nst_name,DateTime nst_csrq,string nst_code)
{
st_name = nst_name;
st_csrq = nst_csrq;
st_code = nst_code;
}
public string st_name
{
get;set;
}
public int st_rsnl
{
get { return _st_rsnl; }
}
public string st_dqnj
{
get { return _st_dqjd; }
}
public DateTime st_csrq
{
get { return _st_csrq; }
set
{
_st_csrq=value;
_st_rsnl = Get_rsnl();
}
}
private int Get_rsnl()
{
TimeSpan dtime= DateTime.Now-this._st_csrq;
int tday=(int)dtime.TotalDays ;
return (int)tday/365;
}
public int pGet_rsnl(DateTime _str_now)
{
TimeSpan dtime = _str_now - this._st_csrq;
int tday = (int)dtime.TotalDays;
return (int)tday / 365;
}
public void Get_Dqnj (int st_nl)
{
string Re_dqnl;
if (st_nl >= 6 && st_nl <= 11)
Re_dqnl = "小学";
else if (st_nl >= 12 && st_nl <= 15)
Re_dqnl = "中学";
else if (st_nl >= 16 && st_nl <= 18)
Re_dqnl = "高中";
else if (st_nl >= 19 && st_nl <= 23)
Re_dqnl = "大学";
else if (st_nl > 23)
Re_dqnl = "研究生/博士";
else
Re_dqnl = "未入学儿童";
_st_dqjd = Re_dqnl;
}
public string st_code
{
get;
set;
}
}
public class C31
{
private DateTime _st_csrq;
private int _st_rsnl;
private string _st_dqjd;
public C31()
{
}
public C31 (string nst_name,DateTime nst_csrq,string nst_code)
{
st_name = nst_name;
st_csrq = nst_csrq;
st_code = nst_code;
}
public string st_name
{
get;set;
}
public int st_rsnl
{
get { return _st_rsnl; }
}
public string st_dqnj
{
get { return _st_dqjd; }
}
public DateTime st_csrq
{
get { return _st_csrq; }
set
{
_st_csrq=value;
_st_rsnl = Get_rsnl();
}
}
private int Get_rsnl()
{
TimeSpan dtime= DateTime.Now-this._st_csrq;
int tday=(int)dtime.TotalDays ;
return (int)tday/365;
}
public int pGet_rsnl(DateTime _str_now)
{
TimeSpan dtime = _str_now - this._st_csrq;
int tday = (int)dtime.TotalDays;
return (int)tday / 365;
}
public void Get_Dqnj (int st_nl)
{
string Re_dqnl;
if (st_nl >= 6 && st_nl <= 11)
Re_dqnl = "小学";
else if (st_nl >= 12 && st_nl <= 15)
Re_dqnl = "中学";
else if (st_nl >= 16 && st_nl <= 18)
Re_dqnl = "高中";
else if (st_nl >= 19 && st_nl <= 23)
Re_dqnl = "大学";
else if (st_nl > 23)
Re_dqnl = "研究生/博士";
else
Re_dqnl = "未入学儿童";
_st_dqjd = Re_dqnl;
}
public string st_code
{
get;
set;
}
}
{
get { return _st_rsnl; }
} 改为: public int st_rsnl
{
get { return _st_rsnl = Get_rsnl(); }
}
{
get { return _st_rsnl; }
} 改为:
C# code public int st_rsnl
{
get { return _st_rsnl = Get_rsnl(); }
}
但是,在出生日期属性里已经有了_st_rsnl = Get_rsnl(); 呀,第一个学生入学年龄能正常显示,第二人学生为什么就不行呢?
public DateTime st_csrq
{
get { return _st_csrq; }
set
{
_st_csrq=value;
_st_rsnl = Get_rsnl();
}
}
{
st_name = nst_name;
st_csrq = nst_csrq; // 是不是你“照书打的类”中 st_csrq 前多加了个 _ ?
st_code = nst_code;
}
public class C31
{
private string _st_Name;
private DateTime _st_csrq;
private string _st_code;
private int _st_rsnl;//入学年龄
private string _st_dqjd;//就读年级
public C31()
{
}
public C31(string nst_name,DateTime nst_csrq,string nst_code)
{
_st_Name = nst_name;
_st_csrq = nst_csrq;
_st_code = nst_code;
}
public string st_name
{
get { return _st_Name; }
set { _st_Name = value; }
}
public DateTime st_csrq//在"出生日期"属性里设置"入学年龄"(现在时间-出生日期=入学年龄)
{
get { return _st_csrq; }
set
{
_st_csrq = value;
_st_rsnl = Get_rsnl();//在属性里面调用方法
}
}
private int Get_rsnl()//自定义方法
{
TimeSpan dtime = DateTime.Now - this._st_csrq;//(现在时间-出生日期=入学年龄)
int tday = (int)dtime.Days;
return (int)tday / 365;
}
public string st_code
{
get { return _st_code; }
set { _st_code = value; }
}
public int st_rsnl//入学年龄属性
{
get { return _st_rsnl = Get_rsnl(); }
}
public string st_dqnj//就读年级属性
{
get { return _st_dqjd; }
}
public int pGet_rsnl(DateTime _str_now)
{
TimeSpan dtime = _str_now - this._st_csrq;
int tday = (int)dtime.TotalDays;
return (int)tday / 365;
}
public void Get_Dqnj(int st_nl)
{
string Re_dqnl;
if (st_nl >= 6 && st_nl <= 11)
Re_dqnl = "小学";
else if (st_nl >= 12 && st_nl <= 15)
Re_dqnl = "中学";
else if (st_nl >= 16 && st_nl <= 18)
Re_dqnl = "高中";
else if (st_nl >= 19 && st_nl <= 23)
Re_dqnl = "大学";
else if (st_nl > 23)
Re_dqnl = "研究生/博士";
else
Re_dqnl = "未入学儿童";
_st_dqjd = Re_dqnl;
}
}
10楼说的好像有道理,但光盘上的第二名学生也直接使用了构造函数设置出生日期: C31 new_2 = new C31("王同学", new DateTime(1976, 6, 20), "444544197606203999"); 没有使用 st_csrq 属性的 set 方法,为什么就可以显示32岁呢?
new_1.st_name ("李同学");
CS1519: 类、结构或接口成员声明中的标记“(”无效