2015-12-12 4 views
0

У меня есть Node класс вроде этого:прибудете Длина массива класса в C#

public class Node { 
     public string name; 
     public int val; 
     public string op; 
     public Node left; 
     public Node right; 

     public Node(string name, int val, string op, Node left, Node right) { 
      this.name = name; 
      this.val = val; 
      this.op = op; 
      this.left = left; 
      this.right = right; 
     } 
     public Node() { 
      name = null; 
      val = 0; 
      op = null; 
      left = null; 
      right = null; 
     } 
} 

, а затем в главном методе я объявляю это так:

public static void Main() { 
      Node[] arr = new Node[500]; 
      arr[0] = new Node("asd",0,null,null,null); 
      WriteLine(arr.Length); 
} 

Мой выход 500 (мой ожидание 1), хотя я объявил новый узел для массива. Пожалуйста помоги. Извините за мой английский.

ответ

4

Используйте список вместо этого, массивы фиксированной длины.

public static void Main() { 
     List<Node> arr = new List<Node>(); 
     arr.Add(new Node("asd",0,null,null,null)); 
     WriteLine(arr.Count); 
} 
+0

спасибо, я сделал это – vunguyenhung

1

Количество элементов, которые не являются нуль:

arr.Count(n => n != null) 

Length свойство возвращает размер массива, но это preinitialized с фиксированным размером, следовательно, результат вы видите в вашем коде.

Смежные вопросы