菜鸟C#问题

时间:2010-08-30 22:38:58

标签: c#

我是C#的新手,这是我的问题


class myClass
{
    int start;
    int end;
    .......
}


class program
{

    public void main()
    {

        myClass[] a= new myClass[10];
        for (int i = 1; i < a.length; i++)
        {
           myClass b = new myClass();
           a[i] = b;
           a[i].start = 1;
           ...  (keep populating)
           ...
        }
           console.writeline(a[1].start)       // NO PROBLEM WITH THIS LINE, THE VALUE WAS OUTPUTED
        subMethod(a);
    }

    public void subMethod(myClass[] a)
    {
        console.write(a[1].start);         // NO PROBLEM WITH THIS LINE, OUTPUT NORMALLY
        for (int i = 1; i < a.length, i++)
        {
            int h = a[i].start;            ????? OBJECT NOT INSTANTIATED
        }
    }
}

错误如上所示,我很难理解。任何人都可以帮助我。提前致谢

3 个答案:

答案 0 :(得分:11)

问题似乎出现在您尚未发布的代码中。

myClass[] a= new myClass[10];
// (populate this array)

我不知道你在那里写了什么,但它显然不起作用。它应该是这样的:

myClass[] a = new myClass[10];
for (int i = 0; i < a.Length; i++)
{
    a[i] = new myClass();
}
  • 您发布的代码无法编译。请复制+粘贴实际代码 - 不要尝试从内存中写入。
  • 您应该注意到数组中的第一个索引是0,而不是1。
  • 我还建议你阅读Microsoft naming guidelines,例如类名应该是Pascal案例。

答案 1 :(得分:2)

您已经实例化了一个数组,但是需要实例化数组中的每个对象。你没有在上面的例子中展示你是如何做到这一点的。

答案 2 :(得分:1)

请发布编译的代码。错误可能在于您的代码转录,因为此代码完全正常:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace RandomArrayTest
{
    class MyClass
    {
        public int start;
    }

    class Program
    {
        static void Main(string[] args)
        {
            MyClass[] a = new MyClass[10];
            for(int i=1; i<a.Length; i++)
            {
                MyClass b = new MyClass();
                a[i] = b;
                a[i].start = 1;
            }

            MyFunction(a);
        }

        static void MyFunction(MyClass[] a)
        {
            for (int i = 1; i < a.Length; i++)
            {
                int h = a[i].start;
                Console.WriteLine(h);
            }
        }
    }
}