2013-12-12 3 views
0

저는 C++에서 new를 사용하고 있습니다. C++에서는 int a[8]을 사용하여 배열을 선언하고 배열이 객체 인 경우 첫 번째 항목의 ID 값을 5로 설정하는 item[0].SetID(5) 값을 설정합니다. 그러나 C#에서는이를 수행 할 수 없습니다.Getter setters in array

namespace Arrays 
{ 
    class items { 
     public int ID { set; get; } 
     public string name { set; get; } 
     public items(int ID) { 
      this.ID = ID; 
      name = "Faizan"; 
     } 
    } 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      var i=new items[4]; 
      i[0].ID=6;// this line is kind of c++ code but how I do it in c# 
      Random r = new Random(); 
      for (int k = 0; k < 4; k++) { 
       i[k] = new items(r.Next()); 
      } 
      foreach(items it in i){ 
       Console.WriteLine("The item name {0} and the Id is {1}",it.name,it.ID); 
      } 

     } 
    } 
} 
+1

배열은 null 요소로 가득 차 있습니다. –

+1

질문과 무관 한 제안 : "아이템"보다는 "아이템"클래스라고 부르는 것이 좋습니다. 클래스가 항목 모음이 아닌 단일 항목을 모델링하는 것처럼 보이기 때문에이 방법이 더 좋습니다. 작은 점이지만 코드에 친숙하지 않은 사람이라면 코드를 더 쉽게 읽을 수 있습니다. – razlebe

답변

3

배열은 생성 후 기본값으로 채워집니다. MSDN :

당신이 선언시 배열을 초기화하지 않는 경우는 배열 구성원이 자동으로 배열 유형에 대한 기본 초기 값으로 초기화됩니다.

참조 유형 (즉, 클래스)의 경우 기본값은 널입니다. 그래서 당신은 그들에 접근 배열 항목을 전에 를 초기화해야합니다

var i =new items[4]; 
// i[0] here is null 

for (int k = 0; k < 4; k++) { 
    i[k] = new items(r.Next()); // now i[0] points to object in memory 
} 

i[0].ID = 6;// now you can set object's property 
0

난 [0] .ID = 6; //이 줄 코드를 C++의 종류하지만 C#에서 그것을 할 방법

귀하의 배열은 비어 있습니다.입니다. in 루프 후에 초기화합니다.

그래서 액세스 후의 값
    • 제 초기화 어레이/0가 null 인덱스에 해당 배열

      static void Main(string[] args) 
      { 
      
          Random r = new Random(); 
          for (int k = 0; k < 4; k++) { 
           i[k] = new items(r.Next()); 
          } 
          foreach(items it in i){ 
           Console.WriteLine("The item name {0} and the Id is {1}",it.name,it.ID); 
          } 
      
          var i= items[4]; 
          i.ID=6;// NOW YOU CAN ACCCESS IT 
      
          //OR SIMPLY 
          items[4].ID=6; 
      
      } 
      
  • 1

    내 아이템 내부 인스턴스의 속성을 변경한다. 당신은 우리가 자동으로 "0"NULL하거나 초기화되는 객체의 배열을 선언 할 때 대신

    i[0] = new items{ID = 6}; 
    
    +1

    "신품"을 사용해야합니다 : – Wasafa1

    +0

    롤프. 내 잘못이야. 결정된. – Alex

    0

    의 C++에서이 작업을 수행해야하는 우리 가져 오거나 나는 경우에 그 (정정 해줘 직후에 값을 설정할 수 있습니다 잘못된). C#은 어떨까요? 내가 생각하는 것은 var i = new items [4]; 이 행은 배열을 초기화합니다. 그렇습니까?