C# 错误:非静态字段、方法或属性需要对象引用

C# 错误:非静态字段、方法或属性需要对象引用,c#,compiler-errors,C#,Compiler Errors,好吧,我完全被我收到的错误迷住了。我在我的课本上举了一个例子 这是我收到的错误: 错误1非静态字段、方法或属性“ClassofEmployees.Form1.managers.BCY.get”C:\Users\T-Ali\Desktop\SHawnasschool\vb.net 2 C\projects\ClassofEmployees\ClassofEmployees\Form1.cs 59 13 ClassofEmployees”需要对象引用 据我所知,该对象不是创建的。然而,我相信我用这行

好吧,我完全被我收到的错误迷住了。我在我的课本上举了一个例子

这是我收到的错误:

错误1非静态字段、方法或属性“ClassofEmployees.Form1.managers.BCY.get”C:\Users\T-Ali\Desktop\SHawnasschool\vb.net 2 C\projects\ClassofEmployees\ClassofEmployees\Form1.cs 59 13 ClassofEmployees”需要对象引用

据我所知,该对象不是创建的。然而,我相信我用这行代码创建的对象:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace ClassofEmployees
{
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
     class employee
    { //will include the attributes of all employees of your organization.

        //fields for employee
      public int employeeId; // 5 digit number to represent employee
      public int ssn; //social security number of employee
      public string name; //employee name
      public int dob; //date of birth
      public int pay; //rate of pay


    }

    class managers : employee
    {
        public string backgroundCheck {get; set;}
        public string isSalary;
        public string responsibilitys;



    }
    private void getEmployeeData(employee employee)
    {

        employee.employeeId = int.Parse(EmployeeID.Text);
        employee.ssn = int.Parse(SSN.Text);
        employee.name = employeeName.Text;
        employee.dob = int.Parse(DOB.Text);
        employee.pay = int.Parse(pay.Text);
        managers.backgroundCheck = bCYes;
        managers.isSalary = salaryYes;
        managers.responsibilitys = responsibilitys.Text;
    }

    private void add_Click(object sender, EventArgs e)
    {
        //create new employee object
        employee newemployee = new employee();
        //get employee data
        getEmployeeData(newemployee);
        //add employee data to new form window list
    }

为什么employee.name或employee.something中的任何一个都起作用,但经理部分不起作用?如何修复此问题?

问题是您正在从
管理器
类读取非静态字段

 //create new employee object
        employee newemployee = new employee();
        //get employee data
        getEmployeeData(newemployee);
        //add employee data to new form window list

managers
是一个类,而不是对象实例。您需要像对待员工一样创建一个新的manager对象。

问题是您正在从
manager
类读取非静态字段

 //create new employee object
        employee newemployee = new employee();
        //get employee data
        getEmployeeData(newemployee);
        //add employee data to new form window list

managers
是一个类,而不是对象实例。您需要像对待员工一样创建一个新的manager对象。

getEmployeeData
Form1
的实例成员,而不是
employee
@lee-是的,您是对的。我在读的时候有点搞混了。问题似乎在于以静态方式使用
管理器
类。非常感谢!!我创建了一个新的管理器对象,现在一切都在流动!键盘如果我创建了类employee:manager类manager这样的类,那么允许我跳过创建新的manager对象吗?基本上翻转继承部分。这是因为父类是
employee
,子类是
manager
。因此,manager类将具有employee属性和自己的属性,但employee类将仅具有自己的属性。这样想吧。您有一个名为
Vehicle
的父类和一个名为
Car
的子类。仅仅因为汽车有
车轮
属性并不意味着所有
车辆
都有车轮。这就是为什么父类(
employee,在本例中为
employee)具有所有employee通用的属性。从它继承的任何东西,如
manager
,都可以添加自己的特定属性。
getEmployeeData
Form1
的实例成员,而不是
employee
@lee-是的,你说得对。我在读的时候有点搞混了。问题似乎在于以静态方式使用
管理器
类。非常感谢!!我创建了一个新的管理器对象,现在一切都在流动!键盘如果我创建了类employee:manager类manager这样的类,那么允许我跳过创建新的manager对象吗?基本上翻转继承部分。这是因为父类是
employee
,子类是
manager
。因此,manager类将具有employee属性和自己的属性,但employee类将仅具有自己的属性。这样想吧。您有一个名为
Vehicle
的父类和一个名为
Car
的子类。仅仅因为汽车有
车轮
属性并不意味着所有
车辆
都有车轮。这就是为什么父类(
employee,在本例中为
employee)具有所有employee通用的属性。从它继承的任何东西,如
manager
,都可以添加自己的特定属性。该错误表明
managers
类有一个名为
BCY
的属性,但这不会出现在您的问题中。你确定这就是导致错误的代码吗?很抱歉,我更改了代码,希望它能解决问题,但它没有,我忘了重新更改代码,我已经编辑了我的帖子,并将代码修复为与我的错误完全相同。该错误表明您的
管理者
类具有名为
BCY
的属性,但这没有出现在您的问题中。你确定这是导致错误的确切代码吗?很抱歉,我更改了代码,希望它能解决问题,但它没有,我忘了重新更改,我编辑了我的帖子,并将代码修复为与错误完全相同的代码。