null 포인터 참조를 얻지 않도록 개체 배열에서 개체를 초기화하는 올바른 방법은 무엇입니까?

Schumacherj

널 포인터 예외를 수신하고 있으며이 작은 코드 블록으로 범위를 좁혔습니다. 설정했을 때 teamStats[iterator].median = Statistics.median아직 초기화되지 않았기 때문에 할 수 없기 때문 이라고 생각합니다 . 이 코드가 유발할 수있는 객체 배열이나 메모리 파급 효과를 초기화하는 적절한 방법을 모르겠습니다.

아래는 설명하는 클래스 외에 내가 다루고있는 대부분의 코드입니다 TeamStat. 그러나 아래의 모든 멤버를 사용했으며 그에 해당 public double합니다.

        TeamStat[] teamStats = new TeamStat[DistCount+1];
        int iterator = 0;
        foreach (int i in TeamIDlist)
        {
            var p = userList.Where(x => x.TeamId.Equals(i)).Select(y => (double)y.BS).ToArray();

            var statistics = new DescriptiveStatistics(p);
            teamStats[iterator].median = Statistics.Median(p);

            teamStats[iterator].largestElement = statistics.Maximum;
            teamStats[iterator].smallestElement = statistics.Minimum;
            teamStats[iterator].mean = statistics.Mean;
            teamStats[iterator].variance = statistics.Variance;
            teamStats[iterator].stdDev = statistics.StandardDeviation;
            iterator++;
        }

최신 정보

이 작업을 수행하는 올바른 방법입니까?

            TeamStat[] teamStats = new TeamStat[DistCount];
        int iterator = 0;
        foreach (int i in TeamIDlist)
        {
            //Added these two lines
            TeamStat temp = new TeamStat();
            teamStats[iterator] = temp;


            var p = userList.Where(x => x.TeamId.Equals(i)).Select(y => (double)y.BS).ToArray();

            var statistics = new DescriptiveStatistics(p);
            teamStats[iterator].median = Statistics.Median(p);

            teamStats[iterator].largestElement = statistics.Maximum;
            teamStats[iterator].smallestElement = statistics.Minimum;
            teamStats[iterator].mean = statistics.Mean;
            teamStats[iterator].variance = statistics.Variance;
            teamStats[iterator].stdDev = statistics.StandardDeviation;
            iterator++;
        }
Heinzi

여기

TeamStat[] teamStats = new TeamStat[DistCount+1];

배열을 초기화합니다. 현재 배열에는 DistCount + 1 null항목이 포함 됩니다.

배열에 DistCount + 1TeamStat항목 이 포함 되도록하려면 루프에서 초기화해야합니다.

TeamStat[] teamStats = new TeamStat[DistCount+1];
for (var i = 0; i < DistCount + 1; i++)
    teamStats[i] = new TeamStat();

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관