[C#] Partial νƒ€μž…, Partial λ©”μ„œλ“œ

2022. 9. 10. 17:02Β·πŸ“ Language/✏ C#

1. Partial νƒ€μž…

Partial νƒ€μž…μ€ ν΄λž˜μŠ€(Class), ꡬ쑰체(Struct), μΈν„°νŽ˜μ΄μŠ€(Interface)λ₯Ό μ—¬λŸ¬ νŒŒμΌμ— μ •μ˜ν•  수 있게 ν•œλ‹€.

  • λ‹€λ₯Έ 파일둜 λΆ„ν• λ˜μ§€λ§Œ λ…Όλ¦¬μ μœΌλ‘œλŠ” ν•˜λ‚˜μ΄κΈ° λ•Œλ¬Έμ— 컴파일될 λ•Œ λΆ„ν• λœ 파일이 κ²°ν•©λœλ‹€.
  • μ‚¬μš©ν•˜λŠ” μ΄μœ λŠ” Code Generatorκ°€ λ§Œλ“  μ½”λ“œμ™€ μ‚¬μš©μžκ°€ λ§Œλ“  μ½”λ“œλ₯Ό λΆ„λ¦¬ν•˜κΈ° μœ„ν•¨μ΄λ‹€. κ°œλ°œμžμ—κ²Œ 포컀슀 ν•΄μ•Ό ν•˜λŠ” μ½”λ“œλ₯Ό 뢄리해 μ€€λ‹€λŠ” μ μ—μ„œ 크게 도움이 λœλ‹€.

 

예λ₯Ό λ“€μ–΄, μœˆνΌμ—μ„œλŠ” Form UI λ””μžμΈκ³Ό κ΄€λ ¨λœ Form1.designer.cs νŒŒμΌκ³Ό μ‚¬μš©μžκ°€ μ“°λŠ” Form1.cs νŒŒμΌμ— λ™μΌν•œ ν΄λž˜μŠ€λͺ…을 λ‘κ³  μ΄λ₯Ό partial둜 μ„ μ–Έν•˜λŠ”λ°, μ»΄νŒŒμΌλŸ¬λŠ” λ‚˜μ€‘에 μ΄λ₯Ό ν•©μ³ ν•˜λ‚˜μ˜ ν΄λž˜μŠ€λ‘œ λ§Œλ“ λ‹€. λ˜ν•œ, ASP.NET μ›Ή νΌμ—μ„œλŠ” ν•˜λ‚˜μ˜ μ›ΉνŽ˜μ΄μ§€λ₯Ό λ§Œλ“€ λ•Œ, page1.aspx, page1.aspx.designer.cs, page1.aspx.cs와 κ°™μ΄ 3개의 νŒŒμΌμ„ λ§Œλ“œλŠ”λ°, XML인 page1.aspx μ΄μ™Έμ˜ .cs νŒŒμΌ μ•ˆμ—λŠ” μœˆνΌκ³Ό λ§ˆμ°¬κ°€μ§€κ³  partial ν΄λž˜μŠ€λ₯Ό μ‚¬μš©ν•˜κ³  μžˆλ‹€. μ›Ή κ°œλ°œμžλŠ” Code Behind라 λΆˆλ¦¬λŠ” page1.aspx.cs νŒŒμΌμ—μ„œ μ£Όλ‘œ μž‘μ—…ν•œλ‹€.

 

1) κ΅¬ν˜„

  • Partial ν‚€μ›Œλ“œλ₯Ό class, struct, interface ν‚€μ›Œλ“œ λ°”λ‘œ μ•žμ— μœ„μΉ˜ν•˜μ—¬ μ •μ˜ν•œλ‹€.
  • λΆ„ν• λœ νŒŒμΌμ€ λͺ¨λ‘ λ™μΌν•œ μ ‘κ·Ό μ§€μ •μžλ₯Ό κ°€μ Έμ•Ό ν•œλ‹€.
// 1. Partial Class (3개둜 뢄리)
partial class Class1
{
    public void Run() { }
}

partial class Class1
{
    public void Get() { }
}

partial class Class1
{
    public void Put() { }
}

// 2. Partial Struct
partial struct Struct1
{
    public int ID;
}

partial struct Struct1
{
    public string Name;

    public Struct1(int id, string name)
    {
        this.ID = id;
        this.Name = name;
    }
}

// 3. Partial Interface
partial interface IDoable
{
    string Name{ get; set; }
}

partial interface IDoable
{
    void Do();
}

// IDoable μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„
public class DoClass : IDoable
{
    public string Name{ get; set; }
        
    public void Do()
    {
    }
}

 

2. Partial λ©”μ„œλ“œ

C# 2.0μ—μ„œ μ†Œκ°œλœ Partial νƒ€μž… 이외에 μƒˆλ‘œμš΄ Partial κΈ°λŠ₯인 Partial λ©”μ„œλ“œλ₯Ό C# 3.0에 μΆ”κ°€ν•˜μ˜€λ‹€. 즉, partial κΈ°λŠ₯을 νƒ€μž…μ΄ μ•„λ‹Œ λ©”μ„œλ“œμ— μ μš©ν•œ Partial λ©”μ„œλ“œ κΈ°λŠ₯이닀.

 

1) κ΅¬ν˜„

  • Partial νƒ€μž…μ—μ„œ μ‚¬μš© κ°€λŠ₯ν•˜λ‹€.
  • μ ‘κ·Ό μ œν•œμžκ°€ Private 이어야 ν•œλ‹€.
  • 리턴 값이 μ—†μ–΄μ•Ό(void) ν•œλ‹€.
public partial class Class2
{
    public void Run()
    {
        DoThis();
    }

    // 쑰건 1: private only
    // 쑰건 2: void return only
    partial void DoThis();
}

public partial class Class2
{
    partial void DoThis()
    {
        Log(DateTime.Now);
    }
}

 

 

λ§Œμ•½ 두 번째 μ‹€μ œ λ©”μ„œλ“œ κ΅¬ν˜„μ΄ μƒλž΅λ˜κ³  λ©”μ„œλ“œ μ„ μ–Έλ§Œ 있게 λœλ‹€λ©΄, C# μ»΄νŒŒμΌλŸ¬λŠ” 컴파일 μ‹œ DoThis() 전체λ₯Ό μ—†μ•  버린닀. 즉, νŠΉμ • λ©”μ„œλ“œκ°€ λ‹€λ₯Έ νŒŒμΌμ—μ„œ κ΅¬ν˜„λ˜μ—ˆλŠ”κ°€μ˜ 여뢀에 따라 λ©”μ„œλ“œ 전체λ₯Ό μƒλž΅ν•  수 μžˆλŠ” κΈ°λŠ₯을 μ œκ³΅ν•œλ‹€.

μ €μž‘μžν‘œμ‹œ (μƒˆμ°½μ—΄λ¦Ό)
'πŸ“ Language/✏ C#' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [C# 6.0] μƒˆλ‘œμš΄ κΈ°λŠ₯ (2) - λ¬Έμž₯ 레벨, 클래슀 멀버 레벨
  • [C# 6.0] μƒˆλ‘œμš΄ κΈ°λŠ₯ (1) - ν‘œν˜„μ‹ 레벨
  • [C#] μΈλ±μ„œ(Indexer)
  • [C#] ν”„λ‘œνΌν‹°(Property)
Blxxming
Blxxming
CS 지식과 κ³΅λΆ€ν•˜λ‹€ 배운 것, κ²½ν—˜ν•œ 것 등을 κΈ°λ‘ν•˜λŠ” λΈ”λ‘œκ·Έμž…λ‹ˆλ‹€.
  • Blxxming
    πŸ’‘λ²ˆλœ©πŸ’‘
    Blxxming
  • 전체
    였늘
    μ–΄μ œ
  • 곡지사항

    • Tech Interview
    • πŸ“š Tech (246)
      • πŸ“ Computer Science (96)
        • ✏ OS (12)
        • ✏ Network & Web (10)
        • ✏ Database (11)
        • ✏ Data Structure (6)
        • ✏ Algorithm (40)
        • ✏ Design Pattern (9)
        • ✏ Cloud Computing (3)
        • ✏ (5)
      • πŸ“ Language (73)
        • ✏ Language (6)
        • ✏ C & C++ (11)
        • ✏ C# (19)
        • ✏ JAVA (37)
      • πŸ“ Game (43)
        • ✏ Computer Graphics (2)
        • ✏ Unity (14)
        • ✏ Unreal (26)
        • ✏ (1)
      • πŸ“ Book (34)
        • ✏ Effective (3)
        • ✏ Game Server (16)
        • ✏ Clean Code (14)
        • ✏ (1)
  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.0
Blxxming
[C#] Partial νƒ€μž…, Partial λ©”μ„œλ“œ
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”