본문 바로가기

c#109

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# Blazor에서 Session 데이터 저장하기 - Counter 값 유지하기 웹페이지에서 데이터는 어떻게 저장하는가 Blazor Server App을 통해서 프로젝트를 만들고 나서 Counter 메뉴에서 버튼을 눌러서 올라간 수치를 저장하고 싶어 졌습니다. 별다른 처리를 안 했다면 다른 메뉴를 갔다 오면 해당 수치가 0으로 초기화됩니다. 당연하게 저장될 거라고 생각했는데 처음에는 초기화돼서 당황했습니다. 관련해서 구글링을 해보니 Session에 관련 정보를 저장해야 한다는 것을 확인했습니다. 그리고 SessionStorage를 사용하면 되다는 것까지 확인했습니다. Counter.razor 파일 예제코드 @page "/counter" @inject Blazored.SessionStorage.ISessionStorageService sessionStorage Counter Curre.. 2023. 4. 7.
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.