繁体   English   中英

我在分配数组时遇到问题?

[英]I am having trouble assigning an Array?

我遇到了这段代码的麻烦,我无法弄清楚如何让它工作。 我无法弄清楚问题是什么,看起来它应该工作。 两个地方名为m_nameList的字符串数组都标记为'非静态字段,方法或属性'Solutionname.classname.m_nameList'所需的对象引用

编码:

    public static bool CheckVacantSeats(int seatNumber)
    {            
        if (m_nameList[seatNumber] == null)
      {
          return true;
      }
      return false;
    }

m_nameList是在此静态bool之前在构造函数中声明的数组:

     public SeatManager(int maxNumberOfSeats)
    {
        m_totNumOfSeats = maxNumberOfSeats;
        m_nameList = new string[m_totNumOfSeats];
        m_priceList = new double[m_totNumOfSeats];
    }   

我从另一个类调用CheckVacantSeat:

  bool validSeats = SeatManager.CheckVacantSeats(seatNumber, m_nameList);    

我无法弄清楚它有什么问题。 所以我需要一些帮助来弄清楚为什么m_nameList对我不起作用?

提前致谢!!

//问候

问题是您已将方法标记为静态。 由于它是静态的,因此它具有“no”状态,并且不能访问未标记为静态的类成员。

您可以将m_nameList标记为静态,但这意味着它的值在所有读取和写入之间共享。 m_nameList看起来像一个简单的查找表,所以这可能是你想要的?

推荐读数是静态静态类和静态成员

您的函数是静态的,但您的变量不是静态的。

那么你的调用开始是错误的,你的方法CheckVacantSeats只接受一个参数,所以你不能用两个调用它?

CheckVacantSeats(int seatNumber)
SeatManager.CheckVacantSeats(seatNumber, m_nameList); 

你的方法也是静态的,所以没有必要有一个构造函数。

我想你的追求是:

SeatManager seatManager = new SeatManager(maxNumberOfSeats);
seatManager.CheckVacantSeats(seatNumber);

public bool CheckVacantSeats(int seatNumber)
    {            
        if (m_nameList[seatNumber] == null)
      {
          return true;
      }
      return false;
    }

您混合了两个概念:使用构造函数初始化的实例和使用静态成员的静态类。 您不能指望静态成员方法访问非静态字段。 我猜你的m_nameList字段也是静态的,否则你的代码甚至都不会编译。 您应该选择以下两种方式:

  1. 使所有SeatManager的成员都是非静态的;
  2. SeatManager类转换为静态类,所有成员都是静态的。

由于您需要使用总座位数初始化SeatManager ,因此更好的方法似乎是No.(1)。 然后,而不是SeatManager.CheckVacantSeats()你会打电话像一个实例mySeatManager.CheckVacantSeats() 即使总是只有一个SeatManager实例 - 一个单例 - 这种方法更好。 使用单例,您最终可能会得到一个public static SeatManager Instance { get; set; } public static SeatManager Instance { get; set; } public static SeatManager Instance { get; set; }物业SeatManager :和工作,像这样SeatManager.Instace.CheckVacantSeats() 这通常称为单例模式

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM