下面这段代码中为什么显示waiter类和cooker类中的输出函数不能调用name+字符串,提示非静态字段要求对象引用
而customer类中却可以?namespace hotel
{
        public class customer
        {
            public string name;
            public customer(string name)
            {
                this.name = name;
            }
            public void diancai(string x)
            {
                Console.WriteLine(name + "点了一道" + x);
                waiter.chuancai(x);            }
        
        }
        public class waiter
        {
            public string name;
            public waiter(string name)
            {
                this.name = name;
            }
            public static void chuancai(string x)
            {
                Console.WriteLine("服务员"+name+"告诉厨师"+"炒"+x );
                cooker.chaocai(x);
            }        }
        public class cooker
        {
            public  string name;
            public cooker(string name)
            {
                this.name = name;
            }
            public static void chaocai(string x)
            {
                Console.WriteLine("厨师"+name+"开始炒"+x);
            }        }

解决方案 »

  1.   

    public static void chaocai(string x)
      {
      Console.WriteLine("厨师"+name+"开始炒"+x);
      }
    静态方法只能调用静态字段,你把字段设置成静态就可以了。这样:
    public static string name;
      

  2.   

    chuancai是static方法,他没有this指针,所以不知道name是谁,你要不就把name也声明为static,要不就在chuancai中传入类指针,通过指针访问name,比如  public class waiter
      {
      public string name;
      public waiter(waiter w,string name)
      {
      this.name = name;
      }
      public static void chuancai(waiter w,string x)
      {
      Console.WriteLine("服务员"+w.name+"告诉厨师"+"炒"+x );
      cooker.chaocai(x);
      }  }
      

  3.   

    静态的东西是属于类的,不需要申明一个类的对象,而非static是属于类的对象的,一定要声明对象才能调用
      

  4.   

    你把waiter类和cooker类中static去掉。
      

  5.   

    把static都去掉也不行啊。 
    大神吗,帮帮忙……
      

  6.   

    name是实例对象的字段,静态方法中不能使用实例对象的字段。
      

  7.   


       public void diancai(string x)
       {
            Console.WriteLine(name + "点了一道" + x);
            waiter w = new waiter(name);
            w.chuancai(x);
       }        public void chuancai(string x)
            {
                Console.WriteLine("服务员"+name+"告诉厨师"+"炒"+x );
                 cooker c = new cooker(name);
                 c.chaocai(x);
            }