반응형 c#130 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. C# 코드 컴파일 단계에 대해서 C# 코드 컴파일 C#은 강력한 형식(strongly typed), 어휘 범위(lexically scoped), 함수형(functional), 객체 지향(object-oriented) 및 구성 요소 지향(component-oriented) 프로그래밍 언어입니다. C# 코드는 어떻게 컴파일되고 실행되는지 알아봅시다. C# 코드 컴파일의 단계별 프로세스 C# 코드 작성 C# 컴파일러를 사용해서 코드 컴파일 컴파일러는 코드에 오류가 있는지 여부를 확인합니다. 소스 코드는 Common Intermediate Language (공통 중간 언어, CIL) 또는 Intermediate Language Code (중간 언어 코드, ILC 또는 IL코드)라고 하는 중간 코드로 변환됩니다. C#은 플랫폼 독립적 언어이므로.. 2023. 3. 29. C# Discards _의 정체 Discards _ 란 C#에서는 어플리케이션에서 의도적으로 사용되지 않는 임시 변수인 Discards를 제공한다. Discards 변수는 "_" (underscore, 언더스코어 혹은 underbar, 언더바)로 표시한다. 왜 무시 변수인 Discard가 필요한가? 별도의 변수를 선언 할 필요가 없다. 또한 discards를 사용하면 메모리 할당을 줄일 수 있다. 코드의 의도를 투명하게 만들고 가독성과 유지 관리성을 향상시키는데 도움이 된다. 예제 코드 switch를 사용한 패턴 매칭 class Program { static void ProvideString(string statement) => Console.WriteLine(statement switch { "x" => "hello, x world".. 2023. 3. 23. C# Equals()과 GetHashCode()를 함께 재정의 해야하는 이유 우리가 맞이하는 상황 프로그래밍을 하다보면 하나 이상의 필드를 Key값으로 설정하여 비교하게 되는 경우가 생기게 됩니다. 그리고 평소처럼 분명 같은 키값을 가진 객체를 ContainsKey() 함수로 비교하면 일치하지 않는다고 나올겁니다. hash 값을 사용하는 Collection(HashTable, Dictionary, ConcurrentDictionary)에서 ContainsKey로 실행하면 우선 GetHashCode() 메서드를 비교하고 그 다음에 Equals() 메서드를 실행합니다. 아무리 Equals() 메서드를 열심히 변경해도 그 앞쪽에서 비교가 일어나서 메서드가 실행되지 않습니다. 이 문제를 해결하기 위하여 하나 이상의 필드를 Key값으로 비교하기 위해서는 해당 클래스의 Equals 함수와 .. 2023. 3. 23. 이전 1 ··· 16 17 18 19 20 21 22 다음