🐒 C#

    C# extern ν‚€μ›Œλ“œ

    using System; using System.Runtime.InteropServices; class Program { // extern ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ™ΈλΆ€μ—μ„œ κ΅¬ν˜„λœ λ©”μ„œλ“œλ₯Ό λ‚˜νƒ€λƒ„ [DllImport("user32.dll")] public static extern int MessageBox(IntPtr hWnd, string text, string caption, uint type); static void Main() { // μ™ΈλΆ€μ—μ„œ κ΅¬ν˜„λœ MessageBox ν•¨μˆ˜ 호좜 MessageBox(IntPtr.Zero, "Hello, World!", "Message", 0); } } -C#μ—μ„œ μ™ΈλΆ€λ‘œλΆ€ν„° κ΅¬ν˜„λœ λ©”μ„œλ“œλ₯Ό λ‚˜νƒ€λƒ„ -ν˜„μž¬ C# μ½”λ“œ 파일이 μ•„λ‹Œ λ‹€λ₯Έ μ–Έμ–΄λ‘œ μž‘μ„±λœ μ½”λ“œμ— μ •μ˜λœ λ©”μ„œλ“œμž„μ„..

    C# DataTable.Select λ©”μ„œλ“œ

    DataRow[] DataTable.Select(string filterExpression); - DataTable κ°μ²΄μ—μ„œ νŠΉμ • 쑰건을 λ§Œμ‘±ν•˜λŠ” 행듀을 선택 - filterExpression: 필터링을 μœ„ν•œ 식을 λ‚˜νƒ€λ‚΄λŠ” λ¬Έμžμ—΄, SQL WHERE 절과 μœ μ‚¬ν•œ ν˜•νƒœλ₯Ό κ°€μ§€λ©°, νŠΉμ • 쑰건을 μ •μ˜ -Select λ©”μ„œλ“œμ˜ λ°˜ν™˜κ°’μ€ DataRow 배열이며, 이 배열은 쑰건을 λ§Œμ‘±ν•˜λŠ” 행듀을 λ‹΄κ³  있음 (ν•„ν„° 식에 λ§žλŠ” λͺ¨λ“  행듀이 ν¬ν•¨λœ 배열을 λ°˜ν™˜)

    C# Windows Forms 폼의 λ‘œλ“œ

    일반적인 Windows Forms μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œμ˜ 폼 λ‘œλ“œ μˆœμ„œ -Windows Forms μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ 폼이 μƒμ„±λ˜κ³  μ΄ˆκΈ°ν™”λ˜λ©°, μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€κ°€ 화면에 λ‘œλ“œλ˜λŠ” μˆœμ„œκ°€ μ΄λ£¨μ–΄μ§‘λ‹ˆλ‹€. μž‘μ—…λ“€μ΄ 이루어짐 1. 폼 객체 생성: ν•΄λ‹Ή 폼 클래슀의 객체가 λ©”λͺ¨λ¦¬μ— ν• λ‹Ήλ˜μ–΄ 생성됨 2. 폼 μƒμ„±μž 호좜: 클래슀의 μΈμŠ€ν„΄μŠ€κ°€ λ§Œλ“€μ–΄μ§ˆ λ•Œ μžλ™μœΌλ‘œ ν˜ΈμΆœλ˜μ–΄ ν•΄λ‹Ή μΈμŠ€ν„΄μŠ€λ₯Ό μ΄ˆκΈ°ν™” -폼 객체가 μƒμ„±λ˜λ©΄ ν•΄λ‹Ή 폼 클래슀의 μƒμ„±μžκ°€ 호좜됨 -μƒμ„±μžμ—μ„œλŠ” 주둜 UI μ»΄ν¬λ„ŒνŠΈ μ΄ˆκΈ°ν™” 및 κΈ°λ³Έ μ„€μ • μž‘μ—…μ΄ μˆ˜ν–‰λ¨ -μƒμ„±μž μ•ˆμ—μ„œ InitializeComponent() λ©”μ„œλ“œ 등이 ν˜ΈμΆœλ˜μ–΄ λ””μžμ΄λ„ˆμ—μ„œ μƒμ„±λœ UI μ»΄ν¬λ„ŒνŠΈ μ΄ˆκΈ°ν™” μ½”λ“œκ°€ 싀행됨 3. Load 이벀트 ν•Έλ“€λŸ¬ 등둝: -μƒμ„±μžμ—μ„œλŠ” Load 이벀트 ν•Έλ“€λŸ¬λ₯Ό ..

    231019 c# CLR, C# 컴파일러, JIT 컴파일러, 쀑간언어(MSIL), μ–΄μ…ˆλΈ”λ¦¬

    두 번의 컴파일 과정을 톡해 .NET ν”„λ‘œκ·Έλž¨μ€ λ‹€μ–‘ν•œ ν”Œλž«νΌμ—μ„œ 싀행될 수 있으며, μ‹€ν–‰ 쀑에 μ΅œμ ν™”κ°€ 이루어져 μ„±λŠ₯ ν–₯상됨 *CLR : .NET μ–Έμ–΄(C#, VB.NET, F# λ“±)둜 μž‘μ„±λœ μ†ŒμŠ€ μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜κΈ° μœ„ν•œ λŸ°νƒ€μž„ ν™˜κ²½ *C# 컴파일러: κ°œλ°œμžκ°€ μž‘μ„±ν•œ μ†ŒμŠ€ μ½”λ“œλ₯Ό 쀑간 μ–Έμ–΄MSIL (Microsoft Intermediate Language)둜 컴파일, exe λ˜λŠ” .dll ν™•μž₯자λ₯Ό κ°€μ§„ μ–΄μ…ˆλΈ”λ¦¬ νŒŒμΌμ— μ €μž₯됨 (λ°”λ‘œ μ‹€ν–‰ λͺ»ν•¨) *JIT(Just-In-Time) 컴파일러 : ν”„λ‘œκ·Έλž¨μ΄ 싀행될 λ•Œ CLR은 MSIL μ½”λ“œλ₯Ό 읽고, ν•΄λ‹Ή ν”Œλž«νΌμ— νŠΉν™”λœ κΈ°κ³„μ–΄λ‘œ μ‹€μ‹œκ°„μœΌλ‘œ λ³€ν™˜ν•˜λŠ” JIT 컴파일 과정을 μˆ˜ν–‰, JIT 컴파일 λ‹¨κ³„μ—μ„œ μ΅œμ’…μ μΈ ν”Œλž«νΌμ— λ§žλŠ” 기계어 μ½”λ“œκ°€ μƒμ„±λ˜λ©° 기계어 μ½”λ“œκ°€ ..

    231018 C# C# 파일 , λ””μžμ΄λ„ˆ, .NET, λ„€μž„μŠ€νŽ˜μ΄μŠ€, using, μ—΄κ±°ν˜•, override, κ°€μƒλ©”μ„œλ“œ, ꡬ쑰체와 클래슀, pass by value, pass by reference, μžλ™μƒμ„± ν”„λ‘œνΌν‹°, 식바디, InitializeComponent(), μΆ”μƒλ©”μ„œλ“œ, 상속과 ..

    .cs, .designer.cs, .resx 파일 -Visual Studioμ—μ„œ Windows Forms λ˜λŠ” WPF와 같은 μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€λ₯Ό λ””μžμΈν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” GUI μš”μ†Œμ˜ μ½”λ“œμ™€ λ¦¬μ†ŒμŠ€λ₯Ό λΆ„λ¦¬ν•˜κΈ° μœ„ν•΄ 생성됨 -μ΄λŸ¬ν•œ νŒŒμΌλ“€μ€ ν•¨κ»˜ μž‘λ™ν•˜μ—¬ μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€λ₯Ό λ””μžμΈν•˜κ³  그에 ν•„μš”ν•œ μ½”λ“œμ™€ λ¦¬μ†ŒμŠ€λ₯Ό 관리함 -λ””μžμ΄λ„ˆκ°€ μ œκ³΅ν•˜λŠ” μ‹œκ°μ  도ꡬλ₯Ό μ‚¬μš©ν•˜λ©΄ .designer.cs 및 .resx 파일이 μžλ™μœΌλ‘œ μƒμ„±λ˜λ©°, μ΄λŸ¬ν•œ νŒŒμΌμ„ 톡해 μ½”λ“œμ™€ λ¦¬μ†ŒμŠ€ κ°„μ˜ 관계λ₯Ό μ†μ‰½κ²Œ μœ μ§€ν•  수 있음 .cs 파일: μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€ μš”μ†Œμ˜ μ½”λ“œκ°€ ν¬ν•¨λ˜μ–΄ 있음 (λ²„νŠΌ 클릭 이벀트 처리, 데이터 둜직 등이 μœ„μΉ˜) .designer.cs 파일: -λ””μžμΈ νƒ€μž„μ— μƒμ„±λœ μ½”λ“œλ₯Ό 포함함, 일반적으둜 κ°œλ°œμžκ°€ 직접 νŽΈμ§‘X ..

    C#개발 λΉ„μ£Όμ–Ό μŠ€νŠœλ””μ˜€ λ””λ²„κΉ…ν•˜κΈ°

    *디버깅 -Visual Studio와 같은 디버깅 λ„κ΅¬μ—μ„œ λ‹¨κ³„λ³„λ‘œ μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜μ—¬ ν”„λ‘œκ·Έλž˜λ° μ‹€μˆ˜λ₯Ό λ§Œλ“  μ •ν™•ν•œ 지점을 μ°ΎλŠ” 것 -그런 λ‹€μŒ, μ½”λ“œμ—μ„œ λ³€κ²½ν•΄μ•Ό ν•˜λŠ” μˆ˜μ • 사항을 μ΄ν•΄ν•˜κ³ , ν”„λ‘œκ·Έλž¨ 싀행을 계속할 수 μžˆλ„λ‘ 디버깅 도ꡬλ₯Ό 톡해 μ’…μ’… μž„μ‹œμ μΈ λ³€κ²½ 사항을 λ§Œλ“€ 수 있음 *디버깅을 μ‹œμž‘ν•˜κΈ° 전에 ν•΄κ²°ν•˜κ³ μž ν•˜λŠ” 문제λ₯Ό νŒŒμ•… - μ½”λ“œμ—κ²Œμ„œ μ–΄λ–€ λ™μž‘μ„ κΈ°λŒ€ν–ˆλŠ”κ°€? - κ·Έ λŒ€μ‹  μ–΄λ–€ 일이 λ°œμƒν–ˆλŠ”κ°€? *μ½”λ“œμ˜ μ˜λ„λ₯Ό μ•Œκ³  μžˆλŠ”κ°€? >> λ””λ²„κ·Έν•˜λ €λ©΄ μ½”λ“œμ˜ μ˜λ„λ₯Ό μ΄ν•΄ν•˜λŠ” 것이 μ€‘μš” -λ‹€λ₯Έ μ‚¬λžŒμ˜ μ½”λ“œλ₯Ό λ””λ²„κ·Έν•˜κΈ°κ°€ μ’…μ’… λ”μš± 어렀움 -μ‚¬μš©μžμ˜ μ½”λ“œκ°€ μ•„λ‹Œ 경우 효과적으둜 λ””λ²„κ·Έν•˜κΈ° μœ„ν•΄ μ½”λ“œκ°€ μˆ˜ν–‰ν•˜λŠ” 것을 μ •ν™•ν•˜κ²Œ ν•™μŠ΅ν•˜λŠ” 데 μ‹œκ°„μ„ μ†ŒλΉ„ν•΄μ•Ό ν•  수 있음 *디버깅 λͺ¨λ“œ(디버거 λ‚΄μ˜ μ•± μ‹€ν–‰)..

    C#의 λ³€μˆ˜μ™€ 속성, 클래슀의 ν•„λ“œμ™€ 멀버

    C#의 λ³€μˆ˜μ™€ 속성 λ³€μˆ˜ - 데이터λ₯Ό μ €μž₯ν•˜λŠ” 데에 주둜 μ‚¬μš©λ¨ 속성 - 클래슀의 λ©€λ²„λ‘œμ„œ μ™ΈλΆ€μ—μ„œμ˜ 접근을 ν†΅μ œν•˜λ©΄μ„œ 데이터에 μ ‘κ·Όν•˜λŠ” 데 μ‚¬μš©λ¨ λ³€μˆ˜ (Variable): -λ©”λͺ¨λ¦¬μ— 값을 μ €μž₯ν•˜κΈ° μœ„ν•œ μž„μ‹œμ μΈ 곡간이며, 데이터λ₯Ό 담을 λ•Œ μ‚¬μš© -λ©”μ†Œλ“œ λ‚΄λΆ€μ—μ„œ μ„ μ–Έλ˜κ±°λ‚˜ 클래슀의 ν•„λ“œλ‘œ 선언될 수 있음 -κΈ°λ³Έ 데이터 ν˜•μ‹(int, string, double λ“±)μ΄λ‚˜ μ‚¬μš©μž μ •μ˜ ν˜•μ‹μ˜ 데이터λ₯Ό μ €μž₯ν•  수 있음 속성 (Property): -클래슀 λ‚΄λΆ€μ—μ„œ μ •μ˜λ˜λ©°, 클래슀의 λ©€λ²„λ‘œμ„œ 클래슀의 μ™ΈλΆ€μ—μ„œ μ ‘κ·Όν•  수 μžˆλŠ” 멀버 -주둜 private λ³€μˆ˜μ— λŒ€ν•œ μ ‘κ·Όμž(Getter)와 μ„€μ •μž(Setter)λ₯Ό μ œκ³΅ν•˜μ—¬ 데이터 μΊ‘μŠν™”λ₯Ό μœ„ν•΄ μ‚¬μš©λ¨ -값을 κ°€μ Έμ˜€κ±°λ‚˜ μ„€μ •ν•˜λŠ” 데 μ‚¬μš©λ˜λ©°, getκ³Ό set μ ‘κ·Όμž..

    231016 C# as, ν•„λ“œμ™€ ν”„λ‘œνΌν‹°,setDataBinding, dataSource, dataMember, DisplayMember와 ValueMember ,OwnerDrawCell 이벀트

    as ν˜•λ³€ν™˜μ„ μ•ˆμ „ν•˜κ²Œ μˆ˜ν–‰ν•˜λŠ” C# ν‚€μ›Œλ“œ grdMainList.DataSourceκ°€ DataTable νƒ€μž…μœΌλ‘œ ν˜•λ³€ν™˜μ΄ κ°€λŠ₯ν•œ 경우 ν˜•λ³€ν™˜μ„ μˆ˜ν–‰ν•˜κ³ , κ·Έλ ‡μ§€ μ•ŠμœΌλ©΄ null을 λ°˜ν™˜ν•©λ‹ˆλ‹€. 이것은 ν˜•λ³€ν™˜ μ‹€νŒ¨ μ‹œ μ˜ˆμ™Έκ°€ λ°œμƒν•˜μ§€ μ•Šκ²Œ ν•˜κΈ° μœ„ν•œ μ•ˆμ „ν•œ ν˜•λ³€ν™˜ 방식 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€. ν•„λ“œ (Field): 클래슀 λ˜λŠ” ꡬ쑰체 λ‚΄λΆ€μ—μ„œ λ³€μˆ˜ 주둜 클래슀의 μƒνƒœ(멀버 λ³€μˆ˜)λ₯Ό λ‚˜νƒ€λ‚΄κΈ° μœ„ν•΄ μ‚¬μš©λ©λ‹ˆλ‹€. μ§μ ‘μ μœΌλ‘œ ν•„λ“œμ— μ ‘κ·Όν•  수 μžˆμŠ΅λ‹ˆλ‹€. 주둜 ν΄λž˜μŠ€λ‚˜ ꡬ쑰체 λ‚΄λΆ€μ—μ„œλ§Œ μ‚¬μš©λ˜λ©°, 클래슀 μ™ΈλΆ€μ—μ„œλŠ” 숨겨져 μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. ν”„λ‘œνΌν‹° (Property): ν΄λž˜μŠ€λ‚˜ ꡬ쑰체의 멀버 λ³€μˆ˜μ— κ°„μ ‘μ μœΌλ‘œ μ ‘κ·Όν•  수 μžˆλŠ” 방법을 μ œκ³΅ν•©λ‹ˆλ‹€. ν”„λ‘œνΌν‹°λŠ” λ©”μ„œλ“œμ²˜λŸΌ λ³΄μ΄μ§€λ§Œ, μ™ΈλΆ€μ—μ„œλŠ” ν•„λ“œμ²˜λŸΌ μ‚¬μš©λ©λ‹ˆλ‹€. 클래슀 λ˜λŠ” ..