c#刚学,请教高手
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace public与私有的运用类2
{
     class Program
     {
         static void Main(string[] args)
         {
             Class1 student = new Class1();
             student.show();
             student.stName = Console.ReadLine();
             student.stAge = Convert.ToInt32(Console.ReadLine());
             int stuo = Convert.ToInt32(Console.ReadLine());
             student.stno(stuo);
             student.stSex = "男";
             student.stpwd("2011123011");
             student.jieguo();
             Console.ReadKey();
         }
     }
     class Class1
     {
         public string stName;
         public int stAge;
         public string stSex;
         private int stNo;
         private string stPwd;
         public int stno(int st_no)
         {
             if (stNo < 0)
             {
                 Console.WriteLine("请输入真确的年龄!谢谢合作!");
             }
             return st_no = this.stNo;
         }
         public string stpwd(string st_pwd)
         {
             return st_pwd = this.stPwd;
         }
         public void show()
         {
             Console.WriteLine("*********************");
             Console.WriteLine("       Lam制作       ");
             Console.WriteLine("*********************");
         }
         public void jieguo()
         {
             Console.WriteLine("他叫{0},性别{1},年龄{2},学号为{3},密码为:{4}", this.stName, this.stSex, this.stAge, this.stNo, this.stPwd);
         }
     }
}
stPwd怎么是为空的?还有stNO为什么是0。为什么我的值,赋值不进去。我明明为stPwd返回值了。
------解决方案--------------------public string stpwd(string st_pwd)
 {
this.stPwd = st_pwd ;
 return st_pwd  ;
 }
public int stno(int st_no)
 {
 if (stNo < 0)
 {
 Console.WriteLine("请输入真确的年龄!谢谢合作!");
 }
this.stNo = st_no ;
 return st_no  ;
 }
------解决方案--------------------        public int stno(int st_no)
       {
           if (stNo < 0)
           {
               Console.WriteLine("请输入真确的年龄!谢谢合作!");
           }
           return this.stNo = st_no;
       }
       public string stpwd(string st_pwd)
       {
           return this.stPwd = st_pwd;
       }
你赋值的方向是错的,应该是将参数的值付给对象的字段,你却是将字段的值赋给参数。结果就是字段的值仍然是默认值,int的默认值就是0,字符串的默认值就是“”
------解决方案--------------------接受值的一方要在等号左边
this.stPwd = st_pwd,才是给这个实例的stPwd赋值
就像
int i = 0;一样,是把0赋给i
------解决方案--------------------赋值运算符(=)的左边是要被赋值的变量,右边是值。
如,要将整形变量age赋值为20:int age=20;
具体到你的代码里应该是this.stPwd = st_pwd;
你把你的顺序改过来就可以正确赋值了。
------解决方案--------------------student.stno(stuo);只是有个返回值关键是返回值给谁了呢?
Console.WriteLine(student.stno(stuo));
你就可以看到你想要的stno了.但是stno还是0,为什么呢?因为你在初始化student的时候就给stno赋值为0了。
而使用return st_no = this.stNo;这个语句的时候实际执行的是将This.stNo的值0复制给st_no然后将其值返回。
单步追踪过程中你可以看到很明显的结果。
在int stuo = Convert.ToInt32(Console.ReadLine());处打一个断点,执行到这个地方的时候就可以知道student里面值的存放状况了。其中stSex为null,stPwd也是null啊,当然就没有值了。