首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

初学C#的超级小白求前辈指点一个小疑点

2012-03-30 
初学C#的超级小白求前辈指点一个小问题。下面这段代码中为什么显示waiter类和cooker类中的输出函数不能调用

初学C#的超级小白求前辈指点一个小问题。
下面这段代码中为什么显示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);
  }

  }

[解决办法]
public static void chaocai(string x)
{
Console.WriteLine("厨师"+name+"开始炒"+x);
}
静态方法只能调用静态字段,你把字段设置成静态就可以了。这样:
public static string name;
[解决办法]
chuancai是static方法,他没有this指针,所以不知道name是谁,你要不就把name也声明为static,要不就在chuancai中传入类指针,通过指针访问name,比如

C# code
  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);  }  }
[解决办法]
静态的东西是属于类的,不需要申明一个类的对象,而非static是属于类的对象的,一定要声明对象才能调用
[解决办法]
name是实例对象的字段,静态方法中不能使用实例对象的字段。

热点排行