C#에서 객체를 생성하는 방법에는 크게 두 가지가 있습니다. 하나는 Activator.CreateInstance 함수를 사용하는 방법이고, 다른 하나는 new 연산자를 사용하는 방법입니다.
Activator.CreateInstance
Activator.CreateInstance 함수는 지정된 형식의 객체를 생성하는 함수입니다. 이 함수는 다음과 같은 두 가지 인수를 사용합니다.
- 형식: 생성할 객체의 형식
- 인수: 생성할 객체에 전달할 인수
Activator.CreateInstance 함수는 다음과 같은 두 가지 방법으로 객체를 생성할 수 있습니다.
- 기본 생성자: 지정된 형식의 기본 생성자를 사용하여 객체를 생성합니다.
- 지정된 생성자: 지정된 생성자를 사용하여 객체를 생성합니다.
기본 생성자를 사용하여 객체를 생성하려면 다음과 같은 코드를 사용합니다.
MyClass myObject = Activator.CreateInstance(typeof(MyClass));
지정된 생성자를 사용하여 객체를 생성하려면 다음과 같은 코드를 사용합니다.
MyClass myObject = Activator.CreateInstance(typeof(MyClass), new object[] { 1, "Hello" });
new(T)
new 연산자는 지정된 형식의 객체를 생성하는 연산자입니다. 이 연산자는 다음과 같은 두 가지 형식을 사용할 수 있습니다.
- 형식: 생성할 객체의 형식
- 인수: 생성할 객체에 전달할 인수
new 연산자는 다음과 같은 두 가지 방법으로 객체를 생성할 수 있습니다.
- 기본 생성자: 지정된 형식의 기본 생성자를 사용하여 객체를 생성합니다.
- 지정된 생성자: 지정된 생성자를 사용하여 객체를 생성합니다.
기본 생성자를 사용하여 객체를 생성하려면 다음과 같은 코드를 사용합니다.
MyClass myObject = new MyClass();
지정된 생성자를 사용하여 객체를 생성하려면 다음과 같은 코드를 사용합니다.
MyClass myObject = new MyClass(1, "Hello");
차이점
Activator.CreateInstance와 new(T)의 차이점은 다음과 같습니다.
차이점 | Activator.CreateInstance | new(T) |
사용 방법 | 함수 | 연산자 |
인수 | 형식, 인수 | 형식, 인수 |
생성 방법 | 기본 생성자, 지정된 생성자 | 기본 생성자, 지정된 생성자 |
유연성 | 높음 | 낮음 |
성능 | 낮음 | 높음 |
고려 사항
Activator.CreateInstance와 new(T)는 모두 객체를 생성하는 방법이지만, 각각의 장단점이 있습니다.
Activator.CreateInstance는 다음과 같은 상황에서 사용하면 유용합니다.
- 기본 생성자 또는 지정된 생성자를 직접 호출하기 어려운 경우
- 형식에 대한 런타임 정보가 필요한 경우
new(T)는 다음과 같은 상황에서 사용하면 유용합니다.
- 기본 생성자 또는 지정된 생성자를 직접 호출하기 쉬운 경우
- 형식에 대한 런타임 정보가 필요하지 않은 경우
결론
성능을 고려할 때는 new(T)를 사용하는 것이 좋습니다. Activator.CreateInstance는 Reflection을 사용하기 때문에 new(T)에 비해 성능이 낮고 형식에 대한 런타임 정보를 얻기 때문에, 형식에 대한 정보가 없으면 사용할 수 없습니다.
'C#' 카테고리의 다른 글
생성자 체이닝 (Constructor Chaining) (0) | 2024.05.14 |
---|---|
List<T> FindIndex (0) | 2024.03.08 |
C# 비트 연산 : enum을 flag로 활용하는 방법 (0) | 2023.12.11 |
C#에서 class와 struct의 차이점 (0) | 2023.12.06 |
C# Linked List (0) | 2023.12.02 |