2010-08-30 29 views
1

我是菜鳥到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 
     } 
    } 
} 

如上指示的錯誤,我很難去了解它。任何人都可以幫助我。在此先感謝

+2

以及它出現在陣列不正確填充,因此,如果告訴你,你已經離開了填充碼可能會有所幫助 – Nicolas78 2010-08-30 22:41:29

+3

好了,四件事情:其一,你跳過個子方法數組中的第一個元素()(不知道這是否是故意的,並不能說,如果它有什麼與你的問題)。其次,你班上的元素是公開的還是私人的?可能最好是明確的。第三,爲什麼main()不是靜態的?這個程序是否可以編譯?最後,向我們展示你的實例化代碼。這可能是你的錯誤所在。 – riwalk 2010-08-30 22:43:00

+0

我懷疑「人口」是一種方法,如果你想回答你的問題可能是一個好主意,包括你的代碼的有關你的問題的部分數組不是由「裁判」 – kenny 2010-08-30 22:44:01

回答

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); 
      } 
     } 
    } 
} 
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情況下。
2

你實例化一個數組,但新需要實例每個對象在數組中。在上面的例子中,你沒有展示你如何做那件事。