c#187 [C#]지역 함수(Local Function) 지역 함수(Local Function) C#의 지역 함수는 함수의 본문 내부에 존재하는 함수입니다. 함수를 사용할 수 있는 범위가 상위 함수 본문으로 제한되므로 지역 함수라고 하며, C# 7.0에 도입된 기능입니다. 특정 함수 본문 내부에 정의된 함수를 지역 함수, 하위 함수라고 말하며, 특정 함수는 상위 함수라고 말합니다. 지역 함수 특징 지역 함수는 종료자(finalizers), 람다 표현식(lambda expressions), 생성자(constructors) 등에서 호출할 수 있습니다. 지역 함수는 기본적으로 private이므로 접근 한정자 및 static 키워드를 사용할 수 없습니다. main() 함수 또는 상위 함수에서 지역 함수 정의 후 여러 번 호출할 수 있습니다. 지역 함수는 오버로드(Ov.. C# 2022. 5. 29. [C#]멀티스레드(MultiThread) 멀티태스킹(Multitasking) C#에서 멀티스레드를 구현하는 방법을 설명하기 전에 멀티태스킹과 멀티스레딩 개념을 간단하게 알아봅시다. Windows와 Mac OS는 널리 사용되고 있는 멀티태스킹 운영체제입니다. 멀티태스킹 운영체제는 여러 애플리케이션을 동시에 실행할 수 있다는 의미입니다. 예를 들어 우리는 게임을 플레이하면서 유튜브 동영상을 볼 수 있고 코딩을 하면서 노래를 들을 수 있습니다. 이렇게 여러 작업이 가능한 이유는 사용하고 있는 컴퓨터의 운영체제가 멀티태스킹 운영체제이기 때문입니다. 멀티스레딩(Multithreading) 실행되고 있는 프로그램을 프로세스라고 말하며 프로세스를 여러 단위로 나눈 것을 스레드라고 말합니다. 멀티스레딩은 여러 스레드가 동시에 작업하는 것을 말하며, 동시 프로.. C# 2022. 5. 28. [C#]Thread 생성자(Thread Constructor) 스레드(Thread)란? 스레드는 프로세스의 단위입니다. 실행되고 있는 프로그램을 프로세스라고 하며, 한 개의 프로세스로 프로그램을 실행하기 어렵기 때문에 프로세스를 여러 단위(=스레드)로 나누어 프로그램을 효율적으로 실행하도록 합니다. 프로세스에는 기본적으로 스레드가 하나 이상 있으며, 이 스레드를 기본 스레드, 단일 스레드, 싱글 스레드라고 말합니다. 프로세스에 여러 개의 스레드가 존재하면 멀티 스레드라고 말합니다. Thread 클래스의 역할 스레드 생명 주기가 시작되면, Thread 클래스의 객체가 생성됩니다. 스레드 생명 주기가 끝나거나 작업을 완료되었으면 Thread의 실행이 중단되거나 종료됩니다. 다음은 스레드 생명 주기의 상태입니다. 생성(Create) 상태 Thread 객체를 생성했지만, .. C# 2022. 5. 28. [C#]캡슐화(Encapsulation) 캡슐화(Encapsulation) 필드와 메서드를 하나로 묶는 과정을 캡슐화라고 합니다. 필드를 private로 선언하여 클래스 외부에서 접근할 수 없도록 하고 public으로 선언된 메서드(getter 및 setter 메서드)를 사용하여 클래스 내부의 필드를 접근하는 것을 캡슐화라고 할 수 있습니다. 필드를 private으로 선언하는 이유는 클래스 외부에서 직접 접근할 수 없도록 하기 위해서입니다. getter() 및 setter() 메서드를 public으로 선언하는 이유는 유효성 검사를 통해 클래스 외부에서 private으로 선언된 필드를 접근하기 위해서입니다. 캡슐화 예제 다음은 캡슐화 개념을 이해하기 위해 예제를 통해 설명합니다. Person 클래스에는 age라는 필드를 private로 선언하여 .. C# 2022. 5. 25. [C#]확장 메서드(Extension Method) 확장 메서드(Extension Method) 확장 메서드는 C# 3.0에 추가된 새로운 기능으로 클래스 또는 인터페이스를 상속하거나 재구성하지 않고 클래스에 메서드를 추가할 수 있습니다. 확장 메서드는 클래스의 소스 코드를 수정할 수 없거나 변경할 권한이 없는 경우 클래스의 기능을 확장하는 방법으로 사용할 수 있습니다. 다음은 확장 메서드를 이해하기 위한 예제입니다. OriginClass라는 클래스에는 Print1(), Print2(), Print3() 메서드가 존재합니다. public class OriginClass { public void Print1() { Console.WriteLine("Print1() Method Call"); } public void Print2() { Console.Writ.. C# 2022. 5. 24. [C#]중첩 클래스(Nested Class) 중첩 클래스(Nested Class) 클래스 내부에서 클래스를 정의할 수 있습니다. 이러한 클래스 구현 방식을 중첩 클래스라고 합니다. 중첩 클래스를 사용하여 클래스를 그룹화할 수 있으며, 클래스의 사용 범위를 제한할 수 있습니다. class OutsideClass { // ... class InsideClass { // ... } } OutsideClass 내부에 InsideClass 클래스를 정의했으므로 OutsideClass는 중첩 클래스입니다. 중첩 클래스를 사용하는 이유 클래스를 논리적으로 그룹화할 수 있습니다. 특정 클래스 내부에서만 사용되기 때문에 코드를 더 쉽게 파악할 수 있으며, 유지 관리가 쉽습니다. 특정 클래스 내부에서만 사용되므로 클래스 구조가 단순해집니다. 중첩 클래스 예제 다음은.. C# 2022. 5. 19. [C#]Partial 클래스(Partial Class) Partial Class Partial Class는 C# 2.0에 도입된 기능으로 클래스를 여러 파일에 정의할 수 있습니다. 클래스의 내용을 다른 파일로 분할할 수 있지만 논리적으로는 하나입니다. 응용 프로그램이 컴파일될 때 분할된 파일이 결합되기 때문입니다. 클래스를 여러 파일로 분할하려면 partital 키워드를 사용하여 Partial Class로 정의합니다. Partial Class 예제 다음 예제는 Partial Class를 구현하는 방법을 설명합니다. Person.cs라는 클래스 파일을 프로젝트에 추가하고 아래 소스코드를 Person.cs 클래스 파일에 붙여 넣습니다. partial class Person { // 필드 private string _name; private int _age; //.. C# 2022. 5. 18. [C#]메서드 숨기기(Method Hiding) 메서드 숨기기(Method Hiding) 부모 클래스 멤버를 숨기기 위해 new 키워드를 사용하는 것을 메서드 숨기기(Method Hiding)라고 합니다. 메서드 숨기기는 자식 클래스가 부모 클래스의 메서드를 다시 구현하기 위해 사용되며, 메서드 재정의(Method Overriding)와 유사합니다. 메서드 재정의는 부모 클래스의 메서드를 가상 메서드(Virtual Method)로 선언하여 자식 클래스에서 재정의할 수 있도록 합니다. 메서드 숨기기는 부모 클래스의 메서드가 가상 메서드(Virtual Method)로 선언되지 않더라도 부모 클래스의 메서드를 다시 구현할 수 있습니다. 메서드 숨기기 예제 다음 예제는 자식 클래스에서 new 키워드를 사용하여 메서드를 다시 구현합니다. class Parent.. C# 2022. 5. 16. [C#]가상 메서드(Virtual Method), Virtual 키워드 가상 메서드(Virtual Method) Virtual 키워드를 소개하기 전에 객체 지향 프로그래밍(OOP)의 특징인 상속과 재정의에 대해 이해하고 있는지 알아봅시다. 메서드 재정의는 상속과 밀접하게 관련 있는 객체 지향 프로그래밍의 특징입니다. 자식 클래스에서 부모 메서드의 매개 변수 및 반환 타입을 재정의하는 것을 메서드 재정의라고 합니다. C#에서 메서드 재정의를 허용 하기 위해 부모 클래스의 메서드를 virtual 키워드로 선언합니다. virtual 키워드로 선언된 메서드는 가상 메서드라고 부르기도 하며, 가상 메서드가 자식 클래스에서 재정의될 수 있음을 알립니다. 즉, virtual 키워드는 메서드 재정의를 허용하기 위해 사용됩니다. virtual 키워드 사용 방법 재정의가 허용되는 메서드에 v.. C# 2022. 5. 16. [C#]봉인 클래스(Sealed Class) 및 봉인 메서드(Sealed Class) 봉인 클래스(Sealed Class) 클래스가 다른 클래스에 상속되는 것을 원하지 않을 때 해당 클래스를 봉인 클래스(Sealed Class)로 선언할 수 있습니다. 봉인 클래스는 sealed 키워드로 선언합니다. // 봉인 클래스입니다. sealed class Parent { } // 봉인 클래스는 상속될 수 없습니다. class Child : Parent { } class Program { static void Main(string[] args) { } } 실행 결과 위 예제에서 sealed 키워드를 사용하여 밀봉 클래스 Parent를 만들었습니다. 밀봉 클래스는 다른 클래스에 상속될 수 없으므로 컴파일 에러가 발생합니다. 봉인 클래스 특징 봉인 클래스와 추상 클래스는 다릅니다. 봉인 클래스는 추상 .. C# 2022. 5. 15. [C#]구조체(Struct) 구조체(struct) 구조체는 struct 키워드를 사용하여 값 형식(Value Types)을 정의하고 클래스는 class 키워드를 사용하여 참조 형식(Reference Types)을 정의합니다. 값 형식(Value Types) 값이 스택(Stack) 영역에 할당됩니다. 참조 형식(Referenct Types) 값이 힙(Heap) 영역에 할당됩니다. 스택(Stack) 영역은 값이 할당된 힙의 메모리 주소를 참조합니다. 구조체 정의 struct 키워드를 사용하여 구조체를 정의합니다. struct Person { public string name; public int age; } Person 구조체 내부에는 name과 age라는 필드가 존재합니다. 구조체에는 변수뿐만 아니라 메서드, 인덱서도 존재할 수 있습.. C# 2022. 5. 15. [C#]this 키워드 this 키워드 C#에서 this 키워드는 클래스 내부의 메서드 또는 생성자에서 현재 클래스의 인스턴스 멤버를 참조하는데 사용됩니다. 메서드의 매개변수와 인스턴스 변수의 이름이 같은 경우 구분하기 위해 사용되기도 합니다. 즉, this 키워드는 자기 자신(생성된 객체)의 멤버를 접근하기 위해 사용되는 키워드입니다. 다음은 this 키워드를 사용하는 간단한 예제입니다. namespace ConsoleApp2 { class Program { string str; Program(string str) { this.str = str; Console.WriteLine("생성자에서 this: " + this); } static void Main(string[] args) { Program obj = new Progr.. C# 2022. 5. 9. 이전 1 ··· 6 7 8 9 10 11 12 ··· 16 다음