본문 바로가기
반응형

개발/기본) 기본기70

기본기) 비교 연산 차이 (Equls , == ) 비교 연산 차이 (Equls , == ) 비교 연산에 대해서 간략하게 정리한다. 2가지의 자주 사용하는 비교 연산자의 장점과 단점을 정리한다. 설명 == == 연산자는 값 형식(Value Types)과 참조 형식(Reference Types) 모두에서 사용될 수 있습니다. 값 형식의 경우 == 연산자는 해당 값들을 비교하여 값이 같은지 여부를 확인합니다. 참조 형식의 경우 == 연산자는 두 객체의 참조를 비교합니다. 즉, 두 객체가 동일한 메모리 위치를 가리키는지 여부를 확인합니다. 하지만 참조 형식에서 == 연산자를 사용할 때는 객체의 실제 내용이 아니라 참조 값 자체를 비교하기 때문에 주의해야 합니다. Equls Equals 메서드는 System.Object 클래스에 정의된 메.. 2024. 4. 23.
기본기) Easing (이징) Easing (이징) Easing 이란 애니메이션 및 움직임을 부드럽게 하기 위해서 사용되는 기술이다. 객체가 시작점 > 끝점까지 가는 동안에 속도를 조절해서 보다 자연스러운 효과를 만들어 내기 위해서 주로 사용한다. 일반적으로 객체의 이동 속도는 시작점에서 느리게 시작해서 중간에 빠르게 가속되고 끝에 갈수록 다시 천천히 감속하는 형태로 설계를 하는데 이는 우리의 현실 세계에서 속도를 조절할 때의 경험과 거의 일치한다. 시간에 따른 함수로 정의를 하기 때문에 t(시간)과 value 값이 수식(수학방정식)으로 표현된다. 가장 기본이 되는 종류는 다음과 같다. 선형 (ease Linear) 가속(ease in) 감속(ease out) 가속-감속(ease in-out) Easing은 .. 2024. 3. 27.
기본기)C#) String Token을 int[] Array 변경 String Token을 int[] Array 변경 String ',' 으로 구분된 형태의 정수 데이터를 사용하는 경우가 종종 있다. 간략하게 사용하는 방법을 포스팅한다. using System; class Program { static void Main() { string data = "1,2,3,4,5,6"; int[] intArray = Array.ConvertAll(data.Split(','), int.Parse); // 결과 출력 foreach (int num in intArray) { Console.WriteLine(num); } } } int[] array = { 1, 2, .. 2024. 3. 25.
C#) Event Handler 예시코드 Event Handler 예시코드 어떤 기능을 구현할때 하나의 코드를 등록/해제하는 형태로 Event를 처리하는 방법으로 간단하게 시간에 대한 처리를 하는데 해당 시간에 대한 처리가 여러가지 화면에서 같이 처리가 되어야하는 경우(오차가 없는 형태로 처리가 필요한 경우)에 유용하게 사용이 가능하다. using UnityEngine; using System; public class CustomEventArgs : EventArgs { public TimeSpan EventTime { get; private set; } public CustomEventArgs(TimeSpan eventTime) { EventTime = eventTime; } } public class EventManager : MonoBeh.. 2024. 3. 25.
기본기) 조건문 반전(Invert if statement) 조건문 반전(Invert if statement) Invert if statement 의 형태로 해당 조건에 만족하지 않는지를 먼저 판단하는 형태로 결국 해당 조건에 만족하지 않는 조건들이 먼저 선행되서 return을 처리해서 분기를 빠져나가는 형태로 구성되는 코드형태를 말한다. 휴먼이슈를 줄이고 좀더 가독성과 유지보수성을 높일수 있는 방법들이다. bool condition = true; // Original if statement if (condition) { Console.WriteLine("Condition is true"); } else { Console.WriteLine("Condition is false"); } // Inverted if statement if (!condition) { Co.. 2024. 3. 20.
기본기) 패턴 매칭 (Pattern Matching ) 패턴 매칭 (Pattern Matching ) Pattern Matching은 C# 7.0 버전부터 지원되는 기능으로, 단순한 값 비교뿐 아니라 여러 종류의 패턴을 사용하여 객체나 데이터 구조체의 값을 비교하고 추출할 수 있다. 주로 조건문(if)나 분기(Switch)에서 사용하고 다양한 패턴을 활용해서 코드를 간결하고 가독성 있게 작성이 가능하다. 정보를 기반으로 로그인하는 예시를 보면 다음과 같다. using System; public enum LoginStatus { Success, InvalidUsername, InvalidPassword } public class User { public string Username { get; set; } public string Pass.. 2024. 3. 18.
기본기) Guard Clause(Guard Statement) Guard Clause(Guard Statement) 메소드나 함수의 시작 부분에서 입력 매개변수나 조건을 빠르게 검사하여 불필요한 실행을 방지하고 코드의 가독성을 높이는 방법중 하나이다. 보통 조건문(if)를 활용해서 작성을 한다. Guard Clause 를 사용하게 되면 조건에 해당하지 않는 여러가지 많은 조건들이 있는 경우에 조기 종료 / 중지 시키는 것으로 오류를 빠르게 발견하고 코드를 더 쉽게(가독성) 해석하거나 유지보수하기가 쉽게 만든다. 간단하게 음수가 아닌 양수의 값인 경우에만 처리하는 조건 예시이다. using System; public class Example { public void CheckPositiveNumber(int number) { // Guard Cl.. 2024. 3. 18.
문제해결)Exception catched :System.ArgumentException: Enum underlying type and the object must be same type or object must be a String. Type passed in was 'System.Int64'; the enum underlying type was 'System.Int32'. at System.RuntimeType.IsEnumDefi.. Exception catched :System.ArgumentException: Enum underlying type and the object must be same type or object must be a String. Type passed in was 'System.Int64'; the enum underlying type was 'System.Int32'. at System.RuntimeType.IsEnumDefined 해당 문제는 C#에서 enum 의 정의된 값이 있는지 판단하는 Enum.IsDefined를 사용하다가 발생한 에러로 해결방법을 간략하게 포스팅 한다. 설명 데이터 타입 불일치 enum을 다룰 때 올바른 데이터 타입을 사용하는지 확인하세요. en.. 2024. 3. 8.
C#)CallerFilePath : 호출자 정보 확인 CallerFilePath : 호출자 정보 확인 CallerFilePath은 C# 5.0이상에서 사용하는 Attribute로 현재 멤버, 혹은 메소드가 포함된 경로를 제공한다. 주로 사용하는 경우는 로깅이나 디버깅같은 자신의 위치(경로)를 파악할때 사용한다. 로그 파일 확인하는 예제 using System; using System.Runtime.CompilerServices; class Logger { public static void LogFilePath([CallerFilePath] string filePath = "") { Console.WriteLine("File Path: " + filePath); } public static void Main() { LogFilePath(); } .. 2023. 12. 18.
기본기)URL(Uniform Resource Location) Format (UriBuilder) URL(Uniform Resource Location) Format (UriBuilder) URL(Uniform Resource Location) : 웹페이지, 이미지, 동영상과 같은 정보가 위치하는 유니크한 위치 정보로 URL의 구성은 다음과 같다. 예시 URL : https://www.example.com/path/to/resource?param1=value1¶m2=value2#section1 이름 구분 프로토콜(통신규약) http:// 도메인(host) www.example.com 경로(url-path) path/to/resource 넘겨주는 인자(query) param1=value1¶m2=value2 section #section using Syst.. 2023. 11. 24.
c#) volatile 키워드 volatile 키워드 volatile 키워드는 동시에 실행되는 여러 스레드에 의해 필드가 수정될 수 있음을 나타내는 키워드로 참조 형식으로 class, structure 필드에서만 사용이 가능하다. 컴파일러, 런타임 시스템 및 하드웨어는 성능상의 이유로 메모리 위치에 대한 읽기 및 쓰기를 다시 정렬할 수 있고 volatile로 선언된 필드는 특정 종류의 최적화에서 제외된다고 한다. 모든 실행 스레드에서처럼 휘발성 쓰기의 단일 순서가 모두 보장되는 것은 아니기 때문에 사용할때 조심히 사용해야 한다. using System; using System.Threading; class Program { // Define a volatile field private static volatile b.. 2023. 11. 8.
기본기)제네릭 타입(Generic Type) 제네릭 타입(Generic Type) 제네릭이라고도 하는 제네릭 형식은 개발자가 형식 안전성을 유지하면서 다양한 데이터 형식으로 작업할 수 있는 클래스, 함수 또는 데이터 구조를 만들 수 있는 프로그래밍 언어 기능으로 제네릭은 각 특정 유형에 대해 코드를 복제하지 않고도 다양한 데이터 유형과 함께 사용할 수 있는 재사용 가능하고 유연한 코드를 작성하려는 경우에 특히 유용하다. 추상적인 베이스를 기준으로 Casting 을 해서 사용을 많이한다. using System; public class Box { private T item; public void SetItem(T item) { this.item = item; } public T GetItem() { return item; } } public clas.. 2023. 8. 4.
기본기)벡터 정규화 및 단위 벡터 보호되어 있는 글 입니다. 2023. 7. 24.
.Net)c#) IDisposable 사용하기 IDisposable 사용하기 'IDisposable'은 관리되지 않는 리소스를 해제하는 메커니즘을 제공하는 .NET 프레임워크의 인터페이스로. .NET 가비지 수집기는 파일 핸들, 창 핸들, 네트워크 소켓, 데이터베이스 연결 등과 같은 관리되지 않는 리소스를 직접 해제하지 않아서 가비지 수집기(GC)를 돕기 위해 클래스에 이러한 유형의 리소스를 사용해서 해제하거나 다시 사용하ㅏㄹ 개체를 준비하는 모든 작업에 사용 한다. IDisposable 인터페이스에는 정리 코드를 포함하도록 구현되는 Dispose라는 단일 메서드가 포함되어 있다. IDisposable을 구현하는 개체 작업을 마쳤으면 해당 Dispose 메서드를 호출해야 한다. 이렇게 하게되면 개체가 보유하고 있는 모든 리소스를 해제할 수 있으므로 .. 2023. 6. 29.
기본기c# )날짜 포맷: DateTime Format 정리 (HH:mm tt, yyyyMMddHHSS ,yyyyMMddhhSS, yyyy-MM-dd) DateTime Format 정리 (HH:mm tt, yyyyMMddHHSS ,yyyyMMddhhSS, yyyy-MM-dd) DateTime의 여러가지 형식이 있는데 자주 사용하는 Format을 정리한 포스팅이다. DateTime dateTime = DateTime.Now; Console.WriteLine("-------------"); Console.WriteLine(dateTime.ToString("MM/dd/yyyy")); Console.WriteLine(dateTime.ToString("dddd, dd MMMM yyyy")); Console.WriteLine(dateTime.ToString("dddd, dd MMMM yyyy")); Console.WriteLine(dateTime.ToString(.. 2023. 6. 16.
반응형