🎯 객체 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°κ³Ό 개발 ν•„μˆ˜ κ°œλ…μ„ μ •λ¦¬ν•©λ‹ˆλ‹€.


πŸ“— Today I Learned

ν•¨μˆ˜ 포인터

ν•¨μˆ˜ ν¬μΈν„°λŠ” ν•¨μˆ˜λ₯Ό κ°€λ¦¬ν‚€λŠ” ν¬μΈν„°λ‘œ, ν•¨μˆ˜μ˜ μ£Όμ†Œλ₯Ό μ €μž₯ν•˜κ³  이λ₯Ό 톡해 ν•΄λ‹Ή ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μžλ£Œν˜•(*ν•¨μˆ˜ 포인터 이름)(인자 λͺ©λ‘);

[ν•¨μˆ˜ 포인터 μ½”λ“œ μ˜ˆμ‹œ]

일반적으둜 ν•¨μˆ˜λŠ” κ³ μ •λœ μ£Όμ†Œμ— μ €μž₯λ˜μ§€λ§Œ, ν•¨μˆ˜ 포인터λ₯Ό μ‚¬μš©ν•˜λ©΄ μ–΄λ–€ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν• μ§€ λŸ°νƒ€μž„μ— κ²°μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

#include <stdio.h>

int add(int a, int b) {
    return a + b;
}

int subtract(int a, int b) {
    return a - b;
}

int main() {
    int (*operation)(int, int);  
    char op;
    int x = 10, y = 5;

    printf("연산을 μ„ νƒν•˜μ„Έμš” (+ λ˜λŠ” -): ");
    scanf(" %c", &op);

    if (op == '+') {
        operation = add;
    } else {
        operation = subtract;
    }

    printf("κ²°κ³Ό: %d\n", operation(x, y));  
}

πŸ€” ν•¨μˆ˜ μ£Όμ†Œκ°’μ„ 전달할 λ•ŒλŠ” μ™œ &λ₯Ό μ“°μ§€ μ•Šμ„κΉŒ?

ν•¨μˆ˜μ˜ 이름이 ν•¨μˆ˜μ˜ λ©”λͺ¨λ¦¬ μ£Όμ†Œκ°’μ΄κΈ° λ•Œλ¬Έμ— μ—°μ‚°μžλ₯Ό 뢙이지 μ•Šμ•„λ„ λ©λ‹ˆλ‹€.




μ‚¬μš©μž μ •μ˜ νƒ€μž…

ꡬ쑰체

ν•˜λ‚˜ μ΄μƒμ˜ μ„œλ‘œ λ‹€λ₯Έ μ’…λ₯˜μ˜ λ³€μˆ˜(데이터)λ₯Ό ν•˜λ‚˜λ‘œ λ¬Άμ–΄μ„œ μƒˆλ‘œμš΄ 데이터 νƒ€μž…μ„ μ •μ˜ν•˜λŠ” κΈ°λŠ₯μž…λ‹ˆλ‹€.

ꡬ쑰체λ₯Ό μ„ μ–Έν•  λ•ŒλŠ” struct ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

#include <stdio.h>

struct Student {
    char name[20];   
    int age;         
    float grade;     
};

int main() {
    struct Student s1 = {"Alice", 20, 3.8};

    printf("이름: %s\n", s1.name);
    printf("λ‚˜μ΄: %d\n", s1.age);
    printf("학점: %.1f\n", s1.grade);

    return 0;
}



곡용체

μ—¬λŸ¬ 개의 λ³€μˆ˜λ₯Ό ν•˜λ‚˜μ˜ λ©”λͺ¨λ¦¬ κ³΅κ°„μ—μ„œ κ³΅μœ ν•˜λŠ” 데이터 κ΅¬μ‘°μž…λ‹ˆλ‹€. ꡬ쑰체와 λΉ„μŠ·ν•˜μ§€λ§Œ λͺ¨λ“  멀버 λ³€μˆ˜κ°€ 같은 λ©”λͺ¨λ¦¬ 곡간을 κ³΅μœ ν•œλ‹€λŠ” μ μ—μ„œ 차이가 μžˆμŠ΅λ‹ˆλ‹€.

곡용체λ₯Ό μ„ μ–Έν•  λ•ŒλŠ” union ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

#include <stdio.h>

union Data {
    int i;
    float f;
    char str[20];
};

int main() {
    union Data data;

    data.i = 10;
    printf("μ •μˆ˜: %d\n", data.i);

    data.f = 3.14;
    printf("μ‹€μˆ˜: %f\n", data.f);
     printf("μ •μˆ˜ κ°’ 확인: %d\n", data.i); // μ΄μƒν•œ 값이 좜λ ₯될 κ°€λŠ₯성이 있음

    strcpy(data.str, "Hello");
    printf("λ¬Έμžμ—΄: %s\n", data.str);

    return 0;
}


⚠️ κ³΅μš©μ²΄λŠ” λͺ¨λ“  멀버가 같은 λ©”λͺ¨λ¦¬λ₯Ό κ³΅μœ ν•˜λ―€λ‘œ, 값을 μ €μž₯ν•˜λ©΄ κΈ°μ‘΄ 값이 μ‚¬λΌμ§‘λ‹ˆλ‹€. λ”°λΌμ„œ 값을 μ €μž₯ν•œ μ¦‰μ‹œ λ°”λ‘œ μ‚¬μš©ν•΄μ•Ό ν•˜λ©°, μ—¬λŸ¬ 값을 λ™μ‹œμ— 보관할 수 μ—†μŠ΅λ‹ˆλ‹€.




μ—΄κ±°ν˜•

κ΄€λ ¨λœ μƒμˆ˜λ“€μ„ ν•˜λ‚˜μ˜ 그룹으둜 λ¬Άμ–΄ 관리할 λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€. μ»΄νŒŒμΌλŸ¬λŠ” μ—΄κ±°ν˜•μ˜ 멀버λ₯Ό μ •μˆ˜ν˜• μƒμˆ˜λ‘œ μ·¨κΈ‰ν•˜λ©°, 기본적으둜 0λΆ€ν„° 1μ”© μ¦κ°€ν•˜λŠ” 값이 μžλ™μœΌλ‘œ ν• λ‹Ήλ©λ‹ˆλ‹€.

μ—΄κ±°ν˜•μ„ μ„ μ–Έν•  λ•ŒλŠ” enum ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

#include <stdio.h>

enum Week {
    SUNDAY = 0,
    MONDAY,
    TUESDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY
};

int main() {
    int userInput;
    enum Week today;

    printf("μš”μΌμ„ 숫자둜 μž…λ ₯ν•˜μ„Έμš” (0: 일, 1: μ›”, 2: ν™”, 3: 수, 4: λͺ©, 5: 금, 6: ν† ): ");
    scanf("%d", &userInput); 

    if (userInput < 0 || userInput > 6) {
        printf("잘λͺ»λœ μž…λ ₯μž…λ‹ˆλ‹€.\n");
    } else {
        today = (enum Week)userInput;  // μ •μˆ˜λ₯Ό μ—΄κ±°ν˜•μœΌλ‘œ λ³€ν™˜

        printf("μ„ νƒν•œ μš”μΌμ˜ 번호: %d\n", today);
    }

    return 0;
}



λ©”λͺ¨λ¦¬

좜처 : μœ„ν‚€ν”Όλ””μ•„ '동적 λ©”λͺ¨λ¦¬ ν• λ‹Ή'


μ½”λ“œ μ˜μ—­

μ½”λ“œ μ˜μ—­μ€ μ‹€ν–‰ν•  ν”„λ‘œκ·Έλž¨μ˜ λͺ…λ Ήμ–΄κ°€ μ €μž₯λ˜λŠ” κ³΅κ°„μž…λ‹ˆλ‹€. CPUκ°€ 이 μ˜μ—­μ—μ„œ λͺ…령어듀을 ν•˜λ‚˜μ”© μ²˜λ¦¬ν•©λ‹ˆλ‹€.


μŠ€νƒ μ˜μ—­

ν•¨μˆ˜ 호좜 μ‹œ μ§€μ—­ λ³€μˆ˜μ™€ ν•¨μˆ˜μ˜ λ°˜ν™˜ μ£Όμ†Œκ°€ μ €μž₯λ˜λŠ” μ˜μ—­μž…λ‹ˆλ‹€.


νž™ μ˜μ—­

νž™μ€ λ™μ μœΌλ‘œ ν• λ‹Ήλœ λ©”λͺ¨λ¦¬κ°€ μ €μž₯λ˜λŠ” κ³΅κ°„μž…λ‹ˆλ‹€. ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ 쀑 μ‚¬μš©μžκ°€ 직접 λ©”λͺ¨λ¦¬λ₯Ό ν• λ‹Ή 및 ν•΄μ œν•  수 μžˆλ‹€.


동적 λ©”λͺ¨λ¦¬ ν• λ‹Ή

#include <stdio.h>
#include <stdlib.h>  // malloc(), free() μ‚¬μš©μ„ μœ„ν•œ 헀더 파일

int main() {
    int *ptr = (int *)malloc(sizeof(int) * 5);  // νž™ μ˜μ—­μ— μ •μˆ˜ 5개 크기의 동적 λ°°μ—΄ ν• λ‹Ή

    if (ptr == NULL) {
        printf("λ©”λͺ¨λ¦¬ ν• λ‹Ή μ‹€νŒ¨\n");
        return 1;
    }

    for (int i = 0; i < 5; i++) {
        ptr[i] = i * 10;
        printf("%d ", ptr[i]);
    }

    free(ptr);  // νž™ λ©”λͺ¨λ¦¬ ν•΄μ œ
    return 0;
}
  • malloc() 같은 동적 λ©”λͺ¨λ¦¬ ν• λ‹Ή ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•΄μ„œ μ‹€ν–‰ 쀑에 크기λ₯Ό μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • λͺ…μ‹œμ μœΌλ‘œ free()λ₯Ό ν˜ΈμΆœν•΄μ•Ό λ©”λͺ¨λ¦¬κ°€ ν•΄μ œλ©λ‹ˆλ‹€.
    ( 동적 ν• λ‹ΉμœΌλ‘œ 얻은 λ©”λͺ¨λ¦¬λ₯Ό free()둜 ν•΄μ œν•˜μ§€ μ•ŠμœΌλ©΄, ν•΄λ‹Ή λ©”λͺ¨λ¦¬λŠ” ν”„λ‘œκ·Έλž¨μ΄ μ’…λ£Œλ  λ•ŒκΉŒμ§€ 계속 μ°¨μ§€ν•˜κ²Œ 되기 λ•Œλ¬Έμž…λ‹ˆλ‹€. )


πŸ’‘ μ•žμœΌλ‘œ 객체λ₯Ό λ™μ μœΌλ‘œ 생성할 λ•Œ μ‚¬μš©λ˜λŠ” new μ—°μ‚°μžλ₯Ό μ΄μš©ν•œ κ°μ²΄λŠ” νž™ μ˜μ—­μ— 객체가 μƒμ„±λ©λ‹ˆλ‹€. λ‹€λ§Œ, TypeScriptμ—μ„œλŠ” λ‹€λ§Œ, GC(κ°€λΉ„μ§€ μ»¬λ ‰μ…˜) 이 있기 λ•Œλ¬Έμ— C++처럼 deleteλ₯Ό 직접 ν•  ν•„μš”λŠ” μ—†μŠ΅λ‹ˆλ‹€.


데이터 μ˜μ—­

데이터 μ˜μ—­μ—λŠ” μ „μ—­ λ³€μˆ˜μ™€ static λ³€μˆ˜κ°€ μ €μž₯λ©λ‹ˆλ‹€. ν”„λ‘œκ·Έλž¨ μ‹œμž‘ μ‹œ λ©”λͺ¨λ¦¬κ°€ ν• λ‹Ήλ˜κ³ , μ’…λ£Œλ  λ•ŒκΉŒμ§€ μœ μ§€λœλ‹€.




객체 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°

ν”„λ‘œκ·Έλž¨μ„ 객체(클래슀) λ‹¨μœ„λ‘œ κ΅¬μ„±ν•˜κ³ , 객체가 μ„œλ‘œ 데이터λ₯Ό μ£Όκ³ λ°›μœΌλ©° λ™μž‘ν•˜λ„λ‘ μ„€κ³„ν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€.

☁️ λ“±μž₯ λ°°κ²½

초기의 ν”„λ‘œκ·Έλž˜λ°μ€ 절차 μ§€ν–₯(ꡬ쑰적) ν”„λ‘œκ·Έλž˜λ° 방식이 μ£Όλ₯Ό μ΄λ€˜μŠ΅λ‹ˆλ‹€. λͺ…λ Ήμ–΄λ₯Ό 순차적으둜 μ‹€ν–‰ν•˜λ©΄μ„œ ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜λŠ” λ°©μ‹μœΌλ‘œ, μ½”λ“œλ₯Ό ν•¨μˆ˜ λ‹¨μœ„λ‘œ λ‚˜λˆ„μ–΄ κ΄€λ¦¬ν•˜λŠ” 것이 νŠΉμ§•μž…λ‹ˆλ‹€.

ν•˜μ§€λ§Œ, μ†Œν”„νŠΈμ›¨μ–΄κ°€ 점점 λŒ€ν˜•ν™”λ˜κ³  λ³΅μž‘ν•΄μ§€λ©΄μ„œ λͺ‡ κ°€μ§€ ν•œκ³„κ°€ λ‚˜νƒ€λ‚¬μŠ΅λ‹ˆλ‹€.

  • μ½”λ“œ μž¬μ‚¬μš©μ΄ μ–΄λ ΅λ‹€

  • μœ μ§€λ³΄μˆ˜κ°€ μ–΄λ ΅λ‹€

  • 데이터 λ³΄ν˜Έκ°€ μ–΄λ ΅λ‹€

μ΄λŸ¬ν•œ 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ 객체 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°(OOP, Object-Oriented Programming) κ°œλ…μ΄ λ“±μž₯ν–ˆμŠ΅λ‹ˆλ‹€.




클래슀

ν΄λž˜μŠ€λŠ” μ‚¬μš©μž μ •μ˜ 데이터 νƒ€μž…μœΌλ‘œ, 데이터(멀버 λ³€μˆ˜)와 κΈ°λŠ₯(멀버 ν•¨μˆ˜)λ₯Ό ν•¨κ»˜ λ¬Άμ–΄ μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•˜λŠ” κ°œλ…μž…λ‹ˆλ‹€. 객체λ₯Ό λ§Œλ“€κΈ° μœ„ν•œ 섀계도라고 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

ꡬ성 μš”μ†Œ

  • 멀버 λ³€μˆ˜(ν•„λ“œ) : 객체가 κ°€μ§€λŠ” λ°μ΄ν„°μž…λ‹ˆλ‹€.

  • λ©”μ„œλ“œ(멀버 ν•¨μˆ˜) : 객체가 μˆ˜ν–‰ν•˜λŠ” κΈ°λŠ₯μž…λ‹ˆλ‹€.

  • μƒμ„±μž(Constructor) : 객체가 생성될 λ•Œ μžλ™μœΌλ‘œ μ‹€ν–‰λ˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€.


μ ‘κ·Ό μ§€μ •μž

μ ‘κ·Ό μ§€μ •μžλŠ” 클래슀 λ‚΄λΆ€μ˜ 멀버(λ³€μˆ˜, λ©”μ„œλ“œ)에 λŒ€ν•œ μ ‘κ·Ό κΆŒν•œμ„ μ„€μ •ν•˜λŠ” ν‚€μ›Œλ“œμž…λ‹ˆλ‹€.

  • public : λˆ„κ΅¬λ‚˜ μ ‘κ·Ό κ°€λŠ₯ν•œ μ§€μ •μžμž…λ‹ˆλ‹€. (μ™ΈλΆ€μ—μ„œλ„ μ‚¬μš© κ°€λŠ₯)

  • protected : 상속 κ΄€κ³„μ—μ„œλ§Œ μ ‘κ·Ό κ°€λŠ₯ν•œ μ§€μ •μžμž…λ‹ˆλ‹€. (μžμ‹ ν΄λž˜μŠ€μ—μ„œλ§Œ μ‚¬μš© κ°€λŠ₯)

  • private : 클래슀 λ‚΄λΆ€μ—μ„œλ§Œ μ ‘κ·Ό κ°€λŠ₯ν•œ μ§€μ •μžμž…λ‹ˆλ‹€. (μ™ΈλΆ€μ—μ„œλŠ” μ ‘κ·Ό λΆˆκ°€λŠ₯)


클래슀 μ˜ˆμ‹œ μ½”λ“œ

ν΄λž˜μŠ€μ„ μ„ μ–Έν•  λ•ŒλŠ” class ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.
객체 μ§€ν–₯ 언어인 C#을 μ˜ˆμ‹œλ‘œ ν•©λ‹ˆλ‹€.

using System;

class Dog {
  // 멀버 λ³€μˆ˜ 
  private int eyes;
  private int nose;
  private int mouth; 
  private int ears;

  // μƒμ„±μž
  public Dog() {
    eyes = 2;
    nose = 1;
    mouth = 1;
    ears = 2;
  }

  // 멀버 λ©”μ„œλ“œ
  public void Bark() {
    Console.WriteLine("멍멍!");
  }
}

class Program {
  static void Main() {
    Dog myDog = new Dog();
    
    // λ©”μ„œλ“œ 호좜
    myDog.Bark(); // "멍멍!"
  }
}



객체 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ° νŠΉμ§•

좔상화

λΆˆν•„μš”ν•œ μ„ΈλΆ€ 사항을 감좔고, 핡심 κΈ°λŠ₯만 μ œκ³΅ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.


μΊ‘μŠν™”

μ™ΈλΆ€μ—μ„œ λ‚΄λΆ€ 데이터λ₯Ό 직접 λ³Ό 수 없도둝 숨기고, μΈν„°νŽ˜μ΄μŠ€λ₯Ό 톡해 μ‘°μž‘ν•˜λ„λ‘ ν•©λ‹ˆλ‹€.


상속성

κΈ°μ‘΄ 클래슀의 κΈ°λŠ₯을 κ·ΈλŒ€λ‘œ λ¬Όλ €λ°›κ³ , ν•„μš”ν•œ κΈ°λŠ₯을 μΆ”κ°€ν•  수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€.

class Animal {
  public void Eat() {
    Console.WriteLine("λ¨ΉλŠ”λ‹€.");
  }
}

class Dog : Animal {
  public void Bark() {
    Console.WriteLine("멍멍!");
  }
}

class Program {
  static void Main() {
    Dog myDog = new Dog();
    myDog.Eat();  // "λ¨ΉλŠ”λ‹€."
    myDog.Bark(); // "멍멍!"
  }
}

λ‹€ν˜•μ„±

같은 λ©”μ„œλ“œλΌλ„ 객체에 따라 λ‹€λ₯΄κ²Œ λ™μž‘ν•˜λŠ” 것을 λ§ν•©λ‹ˆλ‹€. μ˜€λ²„λΌμ΄λ”©(Overriding) κ³Ό μ˜€λ²„λ‘œλ”©(Overloading) 두 κ°€μ§€ 기법이 μžˆμŠ΅λ‹ˆλ‹€.

μ˜€λ²„λ‘œλ”©

같은 μ΄λ¦„μ˜ λ©”μ„œλ“œλ₯Ό λ§€κ°œλ³€μˆ˜λ§Œ λ‹€λ₯΄κ²Œ μ •μ˜ν•©λ‹ˆλ‹€.

class MathOperations {
  public int Add(int a, int b) {
    return a + b;
  }

  public double Add(double a, double b) {
    return a + b;
  }
}

class Program {
  static void Main() {
    MathOperations math = new MathOperations();
    Console.WriteLine(math.Add(3, 5));       // 8
    Console.WriteLine(math.Add(3.5, 2.5));   // 6.0
  }
}

μ˜€λ²„λΌμ΄λ”©

λΆ€λͺ¨ 클래슀의 λ©”μ„œλ“œλ₯Ό μž¬μ •μ˜ν•©λ‹ˆλ‹€.

class Animal {
  public virtual void Speak() {
    Console.WriteLine("동물이 μ†Œλ¦¬λ₯Ό λ‚Έλ‹€.");
  }
}

class Dog : Animal {
  public override void Speak() {
    Console.WriteLine("멍멍!");
  }
}

class Program {
  static void Main() {
    Animal myAnimal = new Dog();
    myAnimal.Speak();  // "멍멍!"
  }
}



μΈν„°νŽ˜μ΄μŠ€

μΈν„°νŽ˜μ΄μŠ€λŠ” λ©”μ†Œλ“œμ˜ λͺ©λ‘λ§Œμ„ κ°€μ§€κ³  μžˆλŠ” λͺ…μ„Έλ‘œ, μ‚¬μš©μž μ •μ˜ νƒ€μž…μž…λ‹ˆλ‹€. 즉, λ©”μ†Œλ“œμ˜ μ„ μ–Έλ§Œ ν¬ν•¨ν•˜λ©°, κ΅¬ν˜„μ€ ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

using System;

interface IFlyable { // μΈν„°νŽ˜μ΄μŠ€ 
    void Fly();  
}

class Bird : IFlyable {
    public void Fly() {
        Console.WriteLine("μƒˆκ°€ λ‚ μ•„κ°‘λ‹ˆλ‹€.");
    }
}

class Airplane : IFlyable {
    public void Fly() {
        Console.WriteLine("λΉ„ν–‰κΈ°κ°€ λ‚ μ•„κ°‘λ‹ˆλ‹€.");
    }
}

class Program {
    static void Main() {
        IFlyable myBird = new Bird();
        myBird.Fly();  // "μƒˆκ°€ λ‚ μ•„κ°‘λ‹ˆλ‹€." 
        
        IFlyable myPlane = new Airplane();
        myPlane.Fly();  // "λΉ„ν–‰κΈ°κ°€ λ‚ μ•„κ°‘λ‹ˆλ‹€." 
    }
}

πŸ€” μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ™œ μ‚¬μš©ν•˜λŠ” 걸까?

일관성 μœ μ§€ - μ—¬λŸ¬ κ°œλ°œμžκ°€ 곡동 μž‘μ—…μ„ ν•  λ•Œ, ν‘œμ€€μ„ μ •ν•˜λŠ” 역할을 ν•©λ‹ˆλ‹€.

μ½”λ“œ μœ μ§€λ³΄μˆ˜ & μˆ˜μ • 용이 - κΈ°μ‘΄ 클래슀λ₯Ό μˆ˜μ •ν•˜μ§€ μ•Šκ³ λ„ κΈ°λŠ₯을 μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

닀쀑 상속 κ°€λŠ₯ - μΈν„°νŽ˜μ΄μŠ€λŠ” μ—¬λŸ¬ 개 상속이 κ°€λŠ₯ν•©λ‹ˆλ‹€.




λžŒλ‹€μ‹

κΈ°μ‘΄ 읡λͺ… λ©”μ†Œλ“œλ₯Ό λ”μš± κ°„κ²°ν•˜κ²Œ λ§Œλ“œλŠ” μ‹μž…λ‹ˆλ‹€.

κΈ°μ‘΄μ—λŠ” 읡λͺ… λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜λ €λ©΄ delegate ν‚€μ›Œλ“œλ₯Ό 써야 ν–ˆλ˜ 것을 =>둜 ν•¨μˆ˜λ₯Ό κ°„κ²°ν•˜κ²Œ ν‘œν˜„ν•œ κ²ƒμž…λ‹ˆλ‹€.

Square square = x => x * x;
Console.WriteLine(square(5));  // 25



✏️ 회고

λ‚΄ μ½”λ“œλŠ” λŒ€λΆ€λΆ„ μ ˆμ°¨μ§€ν–₯μ΄μ—ˆλ‹€λŠ” κ±Έ μ•Œκ²Œ λ˜μ—ˆκ³ , 객체지ν–₯적으둜 λ°”κΎΈλ €λ©΄ ν΄λž˜μŠ€μ— 더 μ΅μˆ™ν•΄μ Έμ•Όκ² λ‹€κ³  λŠκΌˆλ‹€.

profile
🌱개발 기둝μž₯

0개의 λŒ“κΈ€