본문 바로가기
반응형

프로그래밍/C#117

C# 스레드(Thread)에 대해서 스레드(Thread)란 무엇인가프로세스(Process)와 스레드(Thread)의 차이프로세스와 스레드는 컴퓨터에서 동작하는 작업의 단위입니다.각각의 작업은 독립적으로 실행되며, 다른 작업에 영향을 미치지 않습니다.프로세스는 운영체제로부터 자원(메모리, 핸들 등)을 할당받으며, 스레드는 프로세스 내부에서 자원을 공유합니다.각 프로세스는 독립된 주소 공간을 가지며, 서로의 메모리에 접근할 수 없습니다. 하지만 하나의 프로세스 내에서 여러 스레드가 동시에 실행될 경우, 서로의 메모리에 자유롭게 접근할 수 있습니다.프로세스는 하나 이상의 스레드로 구성될 수 있습니다. 스레드는 하나 이상의 프로세스에 속해 있을 수 없습니다.멀티 스레드(Multi-thread)와 단일 스레드(Single-thread)멀티 스레드는.. 2023. 4. 19.
C# is, as, typeof(), GetType() Type-testing 연산자에 대해서 is 연산자 is 연산자는 식 결과의 런타임 형식이 지정된 형식과 호환되는지 확인합니다. 결과값으로 true, false를 반환합니다. Java에서는 동일한 기능을 제공하는 instanceof를 사용한다. Syntax expression is type public class Base { } public class Derived : Base { } public static class IsOperatorExample { public static void Main() { object b = new Base(); Console.WriteLine(b is Base); // output: True Console.WriteLine(b is Derived); // output: False object d = new D.. 2023. 4. 12.
C# 이벤트(Event)에 대해서 알아보자 이벤트(Event)란? C#에서 모든 이벤트(event)는 특수한 형태의 delegate이다. 이벤트는 특수한 제약조건이 추가된 delegate라고 생각하면 이해하기 편하다. 이벤트의 추가(+=) 및 제거(-=)만 가능하다. 할당이 불가능하다.(= 으로 이벤트 할당 불가) 클래스 외부에서 직접 이벤트를 호출할 수 없다. namespace System { // // 요약: // Represents the method that will handle an event that has no event data. // // 매개 변수: // sender: // The source of the event. // // e: // An object that contains no event data. public dele.. 2023. 4. 5.
C# Ref 와 Out 키워드 차이점에 대해서 ref키워드는 변수를 참조 형태로 전달하는데 사용된다. 이는 변수가 메서드 안에서 변경될 수 있다는 뜻이다. out키워드 또한 변수를 참조 형태로 전달하는데 사용된다. 하지만 변수를 전달하기 전에 변수를 초기화 하지 않아도 된다. 하지만 메서드 안에서는 반드시 할당되어야한다. Ref 키워드란 무엇인가? 명시적으로 ref 키워드를 작성해야한다. 매개변수로 전달하기 전에 반드시 초기화 되어야한다. class Program { static void Main(string[] args) { int var = 1; // 전달하기 전에 초기화 되어야한다. RefFunction(ref var); Console.WriteLine("var : ", var); } // ref keyword public static void.. 2023. 4. 4.
C# 확장 메서드(Extension Method) 메서드 첫 번째 인자로 this가 보여서 당황스러울 때 이는 C#이 제공하는 확장 메서드로 이름 그대로 추가적인 메서드를 추가할 수 있습니다. 클래스, 자료구조, 인터페이스에 수정(modifying)이나 상속(deriving), 재 컴파일(re-compiling) 없이 메서드를 추가할 수 있도록 도와줍니다. 따라서 프로그래머가 직접 수정할 수 없는 .NET 프레임워크, 서드파티 클래스나 인터페이스에도 추가가 가능합니다. 예제 코드 class Program { static void Main(string[] args) { int i = 10; bool result = i.IsGreaterThan(100); // int class에 없던 메서드가 추가되었다! Console.WriteLine($"result :.. 2023. 4. 3.
Boxing, UnBoxing에 대해서 알아보자 값 타입과 참조 타입을 서로 변환해주는걸 Boxing, UnBoxing이라고 합니다. 값 타입과 참조 타입 저장 위치 상속 데이터 타입 예시 값 타입(Value Type) 스택(Stack) 영역 System.ValueType int, char, double..등 기본타입과 struct 참조 타입(Reference Type) 힙(Heap) 영역 System.Object class 박싱 (Boxing) 값 타입(Value Type)의 객체를 참조 타입(Reference Type)으로 변환하는 작업을 말합니다. 예제 코드 int i = 10; object o = i; Console.WriteLine(o.ToString()); 언박싱 (UnBoxing) 참조 타입(Reference Type)을 값 타입(Valu.. 2023. 3. 31.