1. 클래스 객체 배열 선언 후 접근 문제
Class 객체를 배열로 생성 하고 사용 하려면 값 타입 배열 생성과 다르게 배열 요소에 접근 하게 되면 null 에러가 발생 한다.
class SomeClass
{
public int Value = 0;
}
SomeSomeClass[] aaa = new SomeClass[10];
aaa[0].Value = 99; // 에러 발생 null exception
여기에서 aaa[0].Value 와 같이 0번째 배열에 접근 하려면 null 포인터 예외가 발생 한다.
SomeClass[] aaa = new SomeClass[10];
for (int i = 0; i < aaa.Length; i++)
{
aaa[i] = new SomeClass();
}
aaa[0].Value = 99; // 에러 없이 성공
위와 같이 new로 각각 할당 해줘야 하는데 매번 저렇게 하면 코드도 지저분해지고 귀찮다.
2. Extension Method 이용
public static class Untility
{
public static void InitializeArray(this T [] array) where T : class, new()
{
for (int i = 0; i < array.Length; i++)
{
array[i] = new T();
}
}
public static T[] InitializeArray( int length ) where T : class, new()
{
T[] array = new T [ length ];
for (int i = 0; i < array.Length; i++)
{
array[i] = new T();
}
return array;
}
}
위와 같이 Extension Method와 Generic Method를 사용 하면 편하게 사용 할 수 있다.
“파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음"
3. 사용법
class SomeClass
{
public int Value = 0;
}
public class Test
{
public void Run()
{
SomeClass[] aaa = new SomeClass[10];
aaa.InitializeArray();
SomeClass[] bbb = Untility.InitializeArray(10);
}
}
c# point array initializec# point array initialize
c# initialize pointf array
c# initialize array of points
c# initialize array with null values
c# initialize array without new
c# initialize array with new objects
c# initialize array null
c# initialize array new
c# how to initialize array of objects
unity3d initialize array c#
unity c# initialize array
c# initialize array of custom class
c# initialize array object
c# generic where t new()
arrays as objects
c# initialize array of objects default constructor
'Programming' 카테고리의 다른 글
Androi NDK를 이용한 C++ 라이브러리 char 형 문제 해결 signed char 와 unsigned char 형에 대한 지정 - Android Studio (0) | 2020.05.27 |
---|---|
C# List 배열 회전 시키기 - Right Rotation - Unity3D (0) | 2020.03.27 |
C# - Enum 형의 내부 형식 변경과 유용한 메소드 - byte (0) | 2020.03.13 |
Smart Card에서 Card Number 읽어 오기 (1) | 2020.02.19 |
오픈JDK 설치 및 환경 설정 ( OpenJDK ) (0) | 2020.02.17 |