回 帖 发 新 帖 刷新版面

主题:为什么这段代码不能编译?

第一个问题已经解决,请各位高手看下面那个

回复列表 (共3个回复)

沙发

还有这段代码错误信息也差不多的:
using System;
namespace UCOM.HR
{
  public class Employee
  {
    public void SetEmpID(string EmpID)
    {
      mstrEmpID=EmpID;
    }
    public string GetEmpID()
    {
      return mstrEmpID;
    }
    public void SetEmpName(string EmpName)
    {
      mstrEmpName=EmpName;
    }
    public string GetEmpName()
    {
      return mstrEmpName;
    }
    public static void SetCompanyName(string CompanyName)
    {
      mstrCompanyName=CompanyName;
    }
    public static string GetCompanyName()
    {
      return mstrCompanyName;
    }
//    public void SetBaseSalary(double BaseSalary)
//    {
//      mdblBaseSalary=BaseSalary;
//    }
    public double GetBaseSalary()
    {
      return mdblBaseSalary;
    }
    private static string mstrCompanyName="";
    private string mstrEmpID="";
    private string mstrEmpName="";
//    private static double mdblBaseSalary=0;
  }
  public class HumanResource
  {
    public static void Promote(Employee Emp)
    {
      Emp.mdblBaseSalary+=1000;
    }
    public static int Main()
    {
      Employee.SetCompanyName("某某公司");
      Employee e1=new Employee();
      e1.SetEmpID("001");
      e1.SetEmpName("ettin");
      e1.mdblBaseSalary=5000;
      Console.WriteLine("员工档案一:所属公司{0},员工姓名{1},员工代号{2},加薪前薪水

{3}",Employee.GetCompanyName,e1.GetEmpName,e1.GetEmpID,e1.mdblBaseSalary);
      Promote(e1);
      Console.WriteLine("员工档案一:所属公司{0},员工姓名{1},员工代号{2},加薪后薪水

{3}",Employee.GetCompanyName,e1.GetEmpName,e1.GetEmpID,e1.mdblBaseSalary);
      return 0;
    }
  }
}
不加//屏蔽的那几行提示不包含mdblBaseSalary的定义,加了后却不可访问,因为受到等级限制

板凳


using System;
namespace UCOM.HR
{
    public class Employee
    {
        //我将变量定义的前面了,这个无所谓,只是看个人习惯而已!
        private static string mstrCompanyName = "";
        private string mstrEmpID = "";
        private string mstrEmpName = "";
        private static double mdblBaseSalary = 0;
        public void SetEmpID(string EmpID)
        {
            mstrEmpID = EmpID;
        }
        public string GetEmpID()
        {
            return mstrEmpID;
        }
        public void SetEmpName(string EmpName)
        {
            mstrEmpName = EmpName;
        }
        public string GetEmpName()
        {
            return mstrEmpName;
        }
        public static void SetCompanyName(string CompanyName)
        {
            mstrCompanyName = CompanyName;
        }
        public static string GetCompanyName()
        {
            return mstrCompanyName;
        }
        public void SetBaseSalary(double BaseSalary)
        {
            mdblBaseSalary = BaseSalary;
        }
        public static double GetBaseSalary()
        {
            return mdblBaseSalary;
        }
        public static void Promote()//这个只能放在这里,不能放在另一个类中,我想是不是你写错了?
        {
            Employee.mdblBaseSalary += 1000;
        }
    }
    public class HumanResource
    {
        public static int Main()
        {
            Employee.SetCompanyName("某某公司");
            Employee e1 = new Employee();
            e1.SetEmpID("001");
            e1.SetEmpName("ettin");
            e1.SetBaseSalary(5000);//这里好像不能直接用变量,我把它换了一下,这样才可以
            Console.WriteLine("员工档案一:所属公司{0},员工姓名{1},员工代号{2},加薪前薪水{3}", Employee.GetCompanyName(), e1.GetEmpName(), e1.GetEmpID(), Employee.GetBaseSalary());//里面你出现了很多问题,现在看看我这个!
            Employee.Promote();//应该是这样写的,因为它是静态函数!
            Console.WriteLine("员工档案一:所属公司{0},员工姓名{1},员工代号{2},加薪后薪水{3}", Employee.GetCompanyName(), e1.GetEmpName(), e1.GetEmpID(), Employee.GetBaseSalary());//同样的问题,现在我也改好了!
            Console.ReadLine();//这是为了在屏幕上面显示用的!!
            return 0;
        }
    }
}
//我也是刚学一学期的NIIT,和你应该一样都是新手,一起努力、共同进步吧!!看看我有没有曲解你的意思,我想你要实现的应该是这个效果吧?如果不是的话,我会再改的,先这样!!

3 楼


e1.mdblBaseSalary=5000;你这个地方很明显的错误,你定义mdblBaseSalary为私有的变量,私有的变量是不可以直接这样复制要通过属性或你上面定义的方法来对他进行赋值和调用 public void SetBaseSalary(double BaseSalary)
//    {
//      mdblBaseSalary=BaseSalary;
//    }
    public double GetBaseSalary()
    {
      return mdblBaseSalary;
    }
用上面的那个方法对mdblBaseSalary进行赋值,用下面那个方法输出结果。。。

我来回复

您尚未登录,请登录后再回复。点此登录或注册