2012-03-01 2 views
-8

클래스 자체의 메서드로 사용할 수있는 클래스에 배열을 갖고 싶습니다. 방법으로 배열을 평가하고 다른 하나를 읽고 싶습니다. C#으로 어떻게 할 수 있습니까? 감사배열을 클래스의 필드로 평가 하시겠습니까?

class Something 
{ 
    Double[] arrayName = new Double[20]; 
    public void Method() 
    { 
     arrayName[index] = value; 
     index++; 
    } 
} 
+0

"방법으로 배열 평가"란 무엇을 의미합니까? –

+0

귀하의 의견에있는 코드를 귀하의 질문에 추가했습니다 (표준에 대한 선호도에 따라 조정). 잘못 설명했다면 조정하십시오. –

답변

2
public class Foo 
{ 
    private SomeType[] _someArrayField; 

    public void SomeMethod() 
    { 
     // you can access the _someArrayField field here 
    } 
} 
+0

+1도 밑줄;) –

+0

@AdamRobinson, 물론 나는 필드에 접두어로 '_'을 사용하는 것이 더 좋습니다. –

+0

맞아요, 그냥 친절한 잽; 나는 개인적으로 그 대회를 싫어하지만 맛은 문제 다. –

0

정보는 문제 (언어 장벽 때문에 가능성) 혼란에 대해 공개했지만,이 두 가지 문제 중 하나입니다

  1. 당신은 노력하고 Something의 컨텍스트 (다른 ​​클래스에서와 마찬가지로) 외부에서 arrayName에 액세스하려면 arrayName (기본 액세스 수준은 private)의 액세스 수준이 문제입니다. 당신이 다른 클래스로 arrayName 필드를 공유해야하는 경우에 당신은 너무처럼 public으로 접두사 수 있습니다

    클래스 뭔가 당신이 index 어딘가에 공공 더블 [] arrayName = 새로운 더블 [정의 가정 { // 20]; public void Method() { arrayName [index] = value; 색인 ++; } }

  2. 배열 요소의 값을 지정하려고합니다. 가지고있는 코드는 배열의 크기까지 작업해야합니다.이 경우 배열은 index = 20 (또는 21 개 요소) 일 때가 될 것입니다. 다음 반복이 발생하면 IndexOutOfBoundsException이 발생합니다. 그 이유는 다음 요소의 배열에 충분한 공간이 없기 때문입니다.

I는 가변 길이 배열이 비슷 List<Double> 전환 추천 것이다. 그것의 구현과 같습니다

class Something 
{ 
    List<Double> listName = new List<Double>(); 
    public void Method() 
    { 
     listName[index] = value; 
     index++; 
    } 
} 

하지만 (이 기능이 필요하면 내가 그것을 제안하지만) 컬렉션의 유형을 변경할 수없는 경우 indexarrayName의 크기보다 큰 경우 당신은 당신의 배열의 크기를 조정할 수 있습니다. 이것이 예일 때 끝나면 예제를 제공 할 수 있습니다 (또는 간단한 검색을 통해 많은 검색 중 하나를 찾을 수 있습니다).

관련 문제