객체 생성 : Activator.CreateInstance와 new(T)

2023. 12. 16. 10:33·C#
반응형

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
'C#' 카테고리의 다른 글
  • 생성자 체이닝 (Constructor Chaining)
  • List<T> FindIndex
  • C# 비트 연산 : enum을 flag로 활용하는 방법
  • C#에서 class와 struct의 차이점
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
    • 분류 전체보기 (545) N
      • 상품 추천 (54)
      • MongoDB (4)
      • 하드웨어 (9)
      • 일기장 (4)
      • Unity (138)
        • Tip (41)
        • Project (1)
        • Design Pattern (8)
        • Firebase (6)
        • Asset (2)
      • 파이썬 (128)
        • Basic (41)
        • OpenCV (8)
        • Pandas (15)
        • PyQT (3)
        • SBC(Single Board Computer) (1)
        • 크롤링 (14)
        • Fast API (29)
        • Package (6)
      • Linux (4)
      • C# (97)
        • Algorithm (11)
        • Window (7)
      • TypeScript (50) N
        • CSS (10)
      • Git (11)
      • SQL (5)
      • Flutter (10)
        • Tip (1)
      • System (1)
      • BaekJoon (6)
      • Portfolio (2)
      • MacOS (1)
      • 유틸리티 (1)
      • 서비스 (6)
      • 자동화 (3)
      • Hobby (10)
        • 물생활 (10)
        • 식집사 (0)
  • 인기 글

  • 태그

    쇼핑몰리뷰
    ipcamera
    스마트스토어리뷰
    카페24리뷰
    스크립트 실행 순서
    codingcommunity
    programmerlife
    셀레니움
    unity
    리스트
    리뷰관리
    cv2
    라떼우유
    codingtips
    rtsp
    긴유통기한우유
    list
    appdevelopment
    유니티
    파이썬
    카페24리뷰이관
    devlife
    리뷰이관
    믈레코비타멸균우유
    programming101
    Python
    스크립트 실행
    C#
    상품 리뷰 크롤링
    learntocode
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코샵
객체 생성 : Activator.CreateInstance와 new(T)
상단으로

티스토리툴바