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返回值了。

解决方案 »

  1.   

    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  ;
      }
      

  2.   

            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,字符串的默认值就是“”
      

  3.   

    接受值的一方要在等号左边this.stPwd = st_pwd,才是给这个实例的stPwd赋值就像
    int i = 0;一样,是把0赋给i
      

  4.   

    赋值运算符(=)的左边是要被赋值的变量,右边是值。
    如,要将整形变量age赋值为20:int age=20;
    具体到你的代码里应该是this.stPwd = st_pwd;
    你把你的顺序改过来就可以正确赋值了。
      

  5.   

    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啊,当然就没有值了。