본문 바로가기
반응형
[C#] as, is 연산자 공통점 둘다 객체를 캐스팅 할 때 사용한다. as 연산자 as 연산자는 캐스팅에 성공하면 캐스트 결과를, 실패하면 null을 리턴한다. 오브젝트의 타입을 변환할 때, 컴파일에러 없이 런타임 에러만 나오는 예외상황을 방지해준다. 참조 타입간의 캐스팅만 가능하다. Parent parent = new parent(); Parent parent2 = new children(); Children child = new children(); child = parent as Children; if(child != null) { children.Method(); //실행안됨 } child = parent2 as Children; if(child != null) { children.Method(); //실행됨 } as 연.. 2023. 5. 14.
[C#] 람다 식, 화살표, Lambda, Arrow Function 개요 최신 C#은 더 깨끗하고 간결한 코드를 작성하는 방법을 끊임없이 찾고 있습니다. 이 목표를 달성하는 데 도움이 되는 기능 중 하나는 화살표 기능입니다. 이 블로그 게시물에서는 C# 화살표 함수가 무엇인지, 어떻게 작동하는지, 왜 개발자에게 유익한지 살펴보겠습니다. 화살표 함수란? C# 6.0에서 도입되었습니다. 람다 식이라고도 합니다. 화살표 함수는 C#에서 익명 함수를 정의하기 위한 간단한 구문을 제공합니다. 이후 특히 대리자, 함수형 프로그래밍 및 비동기 작업으로 작업할 때 코드를 단순화하기 위한 인기 있는 선택이 되었습니다. 장점 가독성: 짧고 단순한 함수 정의의 경우 코드 가독성을 향상시킵니다. 생산성 향상: 화살표 함수는 명시적인 반환문을 없애 프로그래밍 생산성을 높입니다. 코드 유지 관리.. 2023. 5. 14.
[C#] Method Hiding vs Method Overriding 개요 기본 클래스 메서드를 효과적으로 숨길 수 있는 Method Hiding을 소개합니다 숨김은 개발자가 파생 클래스에서 부모 클래스의 메서드와 동일한 이름으로 새 메서드를 정의하는 경우에 발생합니다. 이 글에서는 메서드 숨기기의 개념이 메서드 재정의Overriding와 어떻게 다른지, 언제 사용하는지 살펴보겠습니다. 숨기기Hiding와 재정의Overriding C#에서 메서드 재정의는 부모 클래스의 메서드의 이름을 그대로 사용하면서도 파생 클래스가 메서드 동작내용을 바꿔쓸 수 있도록 합니다.메서드 재정의는 베이스 클래스의 메서드를 가상 메서드(Virtual Method)로 선언하여 자식 클래스에서 재정의할 수 있도록 합니다. 메서드 숨기기는 베이스 클래스 메서드가 가상으로 선언되지 않더라도 new 키워.. 2023. 5. 14.
[OOP]메시지와 메소드의 개념과 관계 개요 OOP(객체 지향 프로그래밍)에서 메시지는 객체가 특정 작업을 수행하도록 요청하는 것입니다. 메서드는 객체 내에서 해당 작업을 구현하는 것입니다. 결론 : 메시지가 객체로 전송되고 객체의 메서드가 요청된 작업을 수행합니다. 설명 OOP에서 객체는 동작과 속성을 정의하는 클래스의 인스턴스입니다. 한 객체가 다른 객체로 하여 작업을 수행하기를 원하면 해당 객체에 메시지를 보냅니다. 메시지는 수행할 작업과 작업에 필요한 데이터를 지정합니다. 메시지를 수신한 객체는 해당 클래스에 정의된 적절한 이름과 매개 변수가 있는 메서드를 찾습니다. 하나를 찾으면 작업을 수행하는 메서드를 실행합니다. 예를 들어 "drive"라는 메서드가 있는 "Car"라는 클래스가 있는 경우 "myCar" 클래스의 객체는 매개 변수가.. 2023. 1. 16.
[Tips] 색 이름, 컬러 이름 찾기 컬러 이름이 필요한 이유 디자인하는 시간의 절반은 컬러 고민입니다. 그만큼 중요하고 한 번 결정하고 나면 모든 것이 연관되어버려서 바꾸기도 쉽지 않습니다. 여러분은 기획에 맞추어 신중하게 고르고 골라 컬러를 선택합니다. 그렇게 선택된 컬러에 관해 팀원과 이야기할때 16진수 컬러 코드로 소통하려면 불편할 것입니다. 컬러의 이름을 특정하면 대화하기 용이합니다. HEX 코드와 RGB 코드 HEX 코드는 RGB를 16진수로 표현합니다. RGB로 표현 가능한 색의 가짓수는 256의 세제곱(16,777,216)입니다. R, G, B 는 각각 256 단계의 색을 가집니다. 빛의 3원색이 서로 혼합되어 색이 만들어지므로 256을 세번 곱하면 모든 경우의 수가 나옵니다. 모니터는 이렇게 결정된 색을 LED 소자로 표현하.. 2022. 10. 21.
[Web] 자바스크립트 KeyCode 검색 사이트 https://www.toptal.com/developers/keycode/for/e JavaScript Key Code for KeyE | Toptal® 0 - That key has no keycode3 - break8 - backspace / delete9 - tab12 - clear13 - enter16 - shift17 - ctrl18 - alt19 - pause/break20 - caps lock21 - hangul25 - hanja27 - escape28 - conversion29 - non-conversion32 - spacebar33 - page up34 - page down35 - end3 www.toptal.com 모든 키코드를 얻을 수 있는 유용한 사이트입니다. 웹앱에서 키입력을 써.. 2022. 9. 13.
[C#] 참조 형식(Reference Types)과 값 형식(Value Types) C# 형식은 참조 형식과 값 형식 두 가지가 있습니다. 참조 형식 (Reference Types) 참조 형식은 Heap 공간에 데이터를 할당합니다. 힙 영역은 동적으로 할당되는 메모리로, 프로그래머가 원하는 시점에 메모리에 들어가는 변수들이 힙 영역으로 들어갑니다. 그리고 가비지 컬렉터는 주기적으로 힙 영역을 청소합니다. 힙 영역에 있는 값이 어떠한 스택에 의해서도 참조되고 있지 않으면 가비지컬렉션의 대상이 됩니다. 참조 형식의 변수에는 데이터(오브젝트)에 대한 '가리킴(참조)'이 저장됩니다. 우리가 어떤 파일을 폴더 안에 넣어두고, 바탕화면에는 바로가기 폴더를 만들어 놓듯이, 참조 변수는 실제 데이터가 어디에 있는지를 가리키는 정보를 가집니다. 값 형식의 변수에는 해당 데이터가 직접 들어가 있습니다. .. 2022. 9. 10.
[C#] Immutable과 Mutable 타입 Immutable과 Mutable 프로그래밍에서 mutable과 immutable은 객체의 상태와 변수를 할당하고 변경할 수 있는 방법을 나타냅니다. 오늘날 대부분의 애플리케이션은 동적입니다. 그러니 데이터가 어떻게 변경되는지가 중요합니다. Mutable과 immutable은 각각 "변경할 수 있는"과 "변경할 수 없는"을 의미합니다. 변경 가능한 타입은 인스턴스가 생성된 후 데이터 멤버를 변경할 수 있는 타입입니다. 변경 불가능한 타입은 인스턴스가 생성된 후에 데이터 멤버를 변경할 수 없는 타입입니다. Immutable Type : 변경할 수 없는 타입 개체를 생성하고 변경하지 않아야 프로그래밍의 부작용을 줄일 수 있을 때 사용합니다. 변경 불가능한 오브젝트의 값을 바꿀 때는 새로운 메모리가 생성되고 .. 2022. 9. 10.
[C#] 묵시적(Implicit), 명시적(Explicit) 형변환 형식 변환은 크게 묵시적(암시적) 형변환과 명시적 형변환으로 구분할 수 있습니다. 묵시적 형변환은 변환 형식이 안전하게 유지됩니다. 데이터가 손실되지 않는 특성으로 인해 특수한 구문이 필요치 않습니다. 예를 들어 숫자 형식 중 int는 그보다 큰 long 형식에 그대로 담을 수 있습니다. Data TypeSize (bytes)Range byte 1 0..255 sbyte 1 -128..127 short 2 -32,768 .. 32,767 ushort 2 0 .. 65,535 int 4 -2,147,483,648 .. 2,147,483,647 uint 4 0 .. 4,294,967,295 long 8 -9,223,372,036,854,775,808 .. 9,223,372,036,854,775,807 ulo.. 2022. 9. 10.
[C#] 박싱(Boxing)과 언박싱(Unboxing) 박싱과 언박싱을 알아야 하는 이유가 개념 자체보다 중요합니다. 결국, 성능 때문에 우리는 박싱과 언박싱에 주목해야 합니다. 여러분은 이미 박싱과 언박싱을 많이 사용하고 있고, 개념도 어렵지 않습니다. 박싱/언박싱 간단 설명 박싱은 값 타입을 참조 타입으로 바꾸는 행위입니다. 언박싱은 반대입니다. 박싱이든 언박싱이든 스택 메모리와 힙 메모리를 오가고 복제하는 과정에서 오버헤드가 발생합니다. int i = 1; // int는 값 타입, object는 참조 타입 object o = i; // boxing int j = (int)o; // unboxing 문제 상황 클래스는 참조 타입입니다. 참조 타입은 인스턴스화 시 힙 메모리에 저장됩니다. 구조체는 값 타입입니다. 선언 시 스택 메모리에 저장됩니다. 박싱-언.. 2022. 9. 10.
[C#] 깊은 복사(Deep Copy)와 얕은 복사(Shallow Copy)의 이해 얕은 복사 Shallow Copy 참조만 복사합니다. 복사된 객체를 수정하면 원본 객체도 바뀝니다. 주의하세요! 얕은 복사의 예시 class Person { public string Name; public int Age; } Person person1 = new Person { Name = "John", Age = 30 }; Person person2 = person1; // Shallow copy person2.Age = 35; Console.WriteLine(person1.Age); // Output: 35 이 예제에서 person1과 person2는 두 개의 다른 오브젝트이지만 동일한 주소 오브젝트를 공유합니다. 깊은 복사 Deep Copy 객체의 독립적인 복사본을 만들 때 사용합니다. 깊은 복사의.. 2022. 9. 10.
[C#] const와 readonly 차이 변수를 초기화하는 시점 const는 코드에 명시된 변수값을 compile 시점에 확정합니다. readonly는 프로그램이 메모리에 올라가는 runtime 시점에 값을 확정합니다. const는 컴파일 타임 상수이며, readonly는 런타임 상수입니다. 상수는 프로그램이 종료될 때까지 변경하거나 수정할 수 없습니다. 그렇다면 차이점은 무엇인지 알아봅시다. const 컴파일 타임 상수입니다. 상수는 기본적으로 정적(Static)입니다. 내장자료형 (정수형, 실수형, Enum, String)에 대해서만 사용 할 수 있습니다. 변수 선언과 동시에 값을 초기화해야 합니다. 클래스 내부의 상수라고 해도 인스턴스화 없이도 값에 접근할 수 있습니다(static과 비슷합니다). 메모리 할당 위치는 기본적으로는 Stack.. 2022. 9. 10.
[C#] ref, in, out, params 매개변수 한정자(ref, in, out, params)란? 매개변수 한정자는 메소드가 받는 인자가 어떤 형태여야 하는지, 어떻게 취급되어야 하는지 명시하는 키워드입니다. 기능과 용도가 달라서 제대로 이해하려면 하나씩 짚어보아야 합니다. ref 매개변수 한정자 변수의 주소를 복사해서 할당과 메소드를 통해 원래 값을 조작할 수 있습니다. 값 형식은 원래 이러한 방식으로 조작할 수 없었다는 사실을 기억합시다. ref 키워드를 달아서 변수의 주소를 복사해보면 다음과 같은 결과를 얻을 수 있습니다. 할당을 통해 변수를 조작 using System; public class Program { public static void Main() { int a = 0; Console.WriteLine(a); ref int a.. 2022. 9. 10.
[OOP] 디자인 패턴을 사용하는 이유 디자인 패턴은 도움이 되는가? 객체지향적 프로그래밍이 무엇인지 이야기할 때 빠지지 않는 것이 디자인 패턴입니다. 팩토리 패턴, 어댑터 패턴, 옵저버 패턴 등 잘 알려진 패턴부터 새롭게 연구된 패턴까지 그 종류가 족히 수백가지에 달합니다. 이것을 더 이상 패턴이라 부르는 게 과연 의미가 있을까 싶을 정도로 많은 종류의 패턴이 고안되었습니다. 디자인 패턴을 하나씩 이해하는 것은 쉽습니다. 그러나 패턴을 외울 작정으로 접근하면 서로 비슷한 패턴이 많아서 헷갈리기 시작합니다. 패턴들 사용에 대한 불편함은 점점 커지다가 근본적인 질문으로 이어집니다. "이 패턴들이 실무에서 도움이 될까?" 이 질문은 공부하기 싫은 사람이 내뱉는 푸념이 아닙니다. 구현을 빨리 하고 싶어서 코드를 패턴에 끼워맞추다 보면 그 코드는 엉.. 2022. 9. 9.
[Web] 모바일 웹처럼 부드러운 스크롤 효과 개요 부드러운 모멘텀 스크롤은 사용자가 스크롤을 멈춘 후 마치 운동량이 있는 것처럼 웹 페이지의 콘텐츠가 부드럽게 계속 이동하는 일종의 스크롤 동작을 말합니다. 이렇게 하면 모바일 장치에서 스크롤하는 것과 유사한 느낌의 보다 자연스럽고 유동적인 스크롤 환경을 만들 수 있습니다. 사용자가 스크롤 막대 또는 트랙패드를 놓으면 갑자기 중지되는 기존 스크롤과는 달리 부드러운 스크롤은 물리 기반 알고리즘을 사용하여 콘텐츠의 속도와 가속도를 계산하여 부드럽고 연속적인 스크롤 모션을 만듭니다. 이렇게 하면 사용자가 긴 페이지나 내용 목록을 더 쉽게 탐색할 수 있으며 웹 사이트의 전반적인 사용자 환경을 개선할 수 있습니다. 부드러운 운동량 스크롤은 스마트폰이나 태블릿과 같은 터치 지원 장치에서 종종 사용되지만, Jav.. 2022. 9. 8.
반응형