public class cusProcess
        {            public string proName;
            public DateTime startTime;
            public int proID;
            public Process pro = new Process();
        }        public static int GetProcess(string name, int c, int cc)
        {
            int t = 0;
            Process[] myProcess = Process.GetProcessesByName(name);
            cusProcess[] cusProcess1 = new cusProcess[c + cc];
            for (int a = 0; a < myProcess.Length; a++)
            {
                System.Console.WriteLine("a");
                cusProcess1[a].proName = name;
                cusProcess1[a].proID = myProcess[a].Id;
                cusProcess1[a].startTime = myProcess[a].StartTime;
                cusProcess1[a].pro=myProcess[a];
            }
        }
能运行到打印字母a的地方~报错的问题行就是下面那行~说Object reference not set to an instance of an object.
我在网上搜了下~还是没有解决我这个问题...能不能帮忙看看怎么弄~那最后4行估计都是同一个错~
谢谢

解决方案 »

  1.   

    请检查一下报错时a的值和“c+cc”的值各是多少,怀疑你的数字在循环a的时候越界了。
      

  2.   

    或者直接在for循环前打个断点,检查一下myProcess.Length是否大于等于"c+cc",如果是的话,肯定会出问题。 cusProcess[] cusProcess1 = new cusProcess[c + cc];
    应该修改成
     cusProcess[] cusProcess1 = new cusProcess[myProcess.Length];至少你循环判断的上限跟你数组的count应该是一致的才对。
      

  3.   

    1.public Process pro = new Process();//这里声明一下就行,不用给分配内存空间。
    2.public static int GetProcess(string name, int c, int cc)这个方法你是怎么调用的?
      

  4.   

    你还没有给cusProcess1数组赋值吧,它的每个元素都是null,
      

  5.   

      int t = 0;
      Process[] myProcess = Process.GetProcessesByName(name);
      cusProcess[] cusProcess1 = new cusProcess[c + cc];
      for (int a = 0; a < myProcess.Length; a++)
      {
      System.Console.WriteLine("a");
      cusProcess1[a].proName = name;
      cusProcess1[a].proID = myProcess[a].Id;
      cusProcess1[a].startTime = myProcess[a].StartTime;
      cusProcess1[a].pro=myProcess[a];
      }
    红色部分:你只是new了一个cusProcess数组,但是具体的每个数组元素没有赋值,仍然为null,后面调用该数组元素当然报错