본문 바로가기
반응형

개발/기본) 기본기70

기본기)c#) Method Chaining(메소드 체이닝) Method Chaining(메소드 체이닝) 메소드 체이닝은 여러 메소드 호출을 단일 명령문의 형태로 결합해서 일련의 작업을 주행할수 있는 기술 테크니컬이다. 메소드 체이닝은 람다에서도 많이 접할수 있다. 간단하게 Chain 처럼 여러개의 Method를 연결해서 사용하는 형태를 말한다. using System; public class Calculator { private int _value; public Calculator(int initialValue) { _value = initialValue; } public Calculator Add(int number) { _value += number; return this; } public Calculator Subtract(int number) { _val.. 2023. 4. 19.
C#) return Swtich (C# 8.0 Switch Expression) return Swtich (C# 8.0 Switch Expression) C#에서 버전이 변경되면서 return switch 문법도 가능하게 되었다. C# 8.0 에서 가능한 표현식으로 switch Expression인데 예시는 다음과 같다. public enum GameType { Normal, Special } private GameType currentGameType = GameType.Normal; public void SwitchTest() { Debug.Log($"[C# switch return] : {GetCount()}"); } public int GetCount() { return currentGameType switch { GameType.Normal => 1, GameType.Spec.. 2023. 1. 25.
기본기)c#) 변수명 앞에 '@'(Symbol) 사용 변수명 앞에 '@'(Symbol) 사용 코드에 '@'가 포함된 코드를 본적이 있어서 @가 무엇을 뜻하고 또 어떤 식으로 동작하는지 궁금해서 알게되어서 정리하는 포스팅 이다. '@' 는 (Symbol)이라고 하고 사용방법과 예시는 다음과 같다. 1. 예약어로 정의된 것을 변수로 사용을 할수 있게 해준다. 예시로 int는 예약어지만 @int 는 변수명으로 판단한다. int @int = 10; 2. 문자열이 그대로 해석된다. 문자를 이스케이프 하지 않고 문자열을 지정할 수 있다. '\' 는 Escape 문자로 일반적으로 다음과 같이 해야한다. var myString = "c:\\myfolder\\myfile.txt" @를 사용하게되면 다음과 같다. var myString = @"c:\myFolder\myfil.. 2023. 1. 9.
C#) List 에서 중복되지 않는 데이터 추출하기 List 에서 중복되지 않는 데이터 추출하기 List에서 중복되지 않는 데이터만 따로 추출해야하는 경우가 생길때 사용하는 코드이다. using System.Linq; var categorys = m_GameDataList.GroupBy(x => x.GetCategory()).Select(y => y.First()); 간단하게 코드를 보면 m_GameDataList List에 있는 Category을 기준으로 Group을 만들고 그 그룹데이터의 First을 가져온다. First 데이터만 가지고오기 때문에 해당 중복되지 않는 데이터를 가지고올수 있다. StackOverFlow Get a List of Distinct Value in List: [링크] Get a list of distinct values in.. 2023. 1. 8.
기본기)Markdown (README.md) 수정하기 Markdown (README.md) 수정하기 단순하게 마크다운에 대한 문법을 알고 있으면 어떤 편집기든 상관없이 편집하고 확장자.md만 붙이면 된다. VS Code가 설치가되어있으면 확장프로그램으로 Markdown All in One이라는 플러그인을 설치하면 미리보기가 가능하다. Readme.md를 지원하는 저장소(Git, Bitbucket, GitLab)에서는 저장소에서 생성 및 편집도 가능하다. 문법에 대한 Template은 다음과 같다. makeareadme.com : [링크] Make a README Learn how to make a great README for your programming project, and use the editable template to get started. w.. 2022. 12. 19.
기본기).Net) Warning 무시(코드 분석 경고 표시하지 않음) Warning 무시(코드 분석 경고 표시하지 않음) Warning은 기본적으로 경고로 코드를 작업하는 과정에서 신경쓰지 못하는 경우가 많다. 그러나 Warning을 대수롭게 생각하면 안된다. 하지만 종종 사용하지 않는 필드에 대해서도 Warning을 노출시켜주는 경우가 있다. warning CS0414 가 대표적이다. 다른 형태로 사용하지만 연결(참조)가 없어서 발생하는 경우 아래의 코드를 사용하면 된다. #pragma warning disable + 경고내용 ... exmaple) #pragma warning disable 414 ... #pragma warning restore + 경고내용 ... exmaple) #pragma warning restore 414 ... Net. 코드 분석 경고를 표시.. 2022. 12. 1.
C#)DateTime Format DateTime Format DateTime은 일반적으로 날짜와 시간으로 표시된 시간을 나타냅니다. 그중에서 자주쓰는 DateTime Format 을 정리한다. 형식 포맷 DateTime.Now.ToString("MM/dd/yyyy") 05/29/2022 DateTime.Now.ToString("dddd, dd MMMM yyyy") Friday, 29 May 2022 DateTime.Now.ToString("dddd, dd MMMM yyyy") Friday, 29 May 2022 05:50 DateTime.Now.ToString("dddd, dd MMMM yyyy") Friday, 29 May 2022 05:50 AM DateTime.Now.ToString("dddd, dd MMMM yyyy") Frid.. 2022. 10. 23.
기본기).Net) IEquatable <T> 비교 IEquatable 해당 인터페이스는 같음을 비교하는 인터페이스로 .Equls(Object)의 형태로 동등한지 비교하는 메소드이다. 비교하는 과정에서 Value Type의 값이 들어가면 Boxing 현상이 이뤄진다고 한다. IEquatable Generic Type으로 정의하고 난 이후에 필요한 타입에 따라 대응하면 해상 상황(Boxing- UnBoxing)을 피할수 있다. using System; using System.Collections.Generic; using System.Text.RegularExpressions; public class Person : IEquatable { private string uniqueSsn; private string lName; public Person(stri.. 2022. 10. 13.
기본기) URL Append (Custome URL Scheme) URL Append (Custome URL Scheme) URL의 기본에다가 추가로 파라미터를 결합하여 미리 규약된데이터를 넘기는 Query 구분을 추가하는 경우가 종종 있다. Query 로 사용하는 일반적인 용도는 다음과 같다. Tracking, Recording, Searching, Identifying, Paginating, Translating, Filtering, Query가 포함된 URL을 확이해보면 다음과 같다. https://drehzr.tistory.com/785?category=362808 Schema : https Host : drehzr.tistroy.com Path : /785 Query : ?category=362808 프로토콜 : // Scheme Host / Scheme Pa.. 2022. 7. 25.
기본기) Custom Exception (사용자 정의 예외) Custom Exception (사용자 정의 예외) Exception을 Custom 해서 사용자가 예외에 대해서 정의 가능하다. 생성방법은 다음과 같다. [Serializable] public class StudentNotFoundException : Exception { public string StudentName { get; } public StudentNotFoundException() { } public StudentNotFoundException(string message) : base(message) { } public StudentNotFoundException(string message, Exception inner) : base(message, inner) { } public Stude.. 2022. 7. 4.
기본기) Null을 효과적으로 처리하기 위한 팁 Null을 효과적으로 처리하기 위한 팁 Null을 사용하는 과정에서 좀더 효율적으로 사용하기 위한 팁을 어떻게 하다가 알게되어서 겸사겸사 정리하는 포스팅이다. 1. Null 체크를 하는 과정을 너무 복잡하게 만들지 마라. if (Optional.ofNullable(myVariable).isPresent()) // bad if (Objects.nonNull(myVariable)) // better, but still bad if (myVariable != null) // good 가독성에 관련된 내용인데 맨밑의 null 체크는 한눈에 파악하기 쉬우나 위의 2가지는 해당 기능의 사이드 이펙트가 존재할수 있다. 직관적인 형태로 사용하는게 제일 좋다. 2. Null을 인수로 전달하지 마라. 좋은 코딩의 가장 중.. 2022. 5. 31.
기본기)c#) 다중 값 반환 (Return multiple value to a method) 다중 값 반환 (Return multiple value to a method) c# 7 Version 부터 포함된 문법으로 Tuple 형태로 반환이 가능하다. 사용하는 방식은 다음과 같다. public (bool,bool,bool) GetResultStageStar() { bool starFlag1 = false; bool starFlag2 = false; bool starFlag3 = false; return (starFlag1, starFlag2, starFlag3); } Miscrosoft C# 7 version : [ 링크 ] What's New in C# 7.0 Update (4/2017): See New Features in C# 7.0, the update to this post. What .. 2022. 4. 6.
기본기) c#) 연속된 숫자를 문자 String 만들기 연속된 숫자를 문자 String 만들기 데이터를 저장하는 과정에서 미리 데이터 사이즈를 만들어서 저장하는 작업을 하던도중에 연속된 숫자를 좀더 편하게 만들고 싶었다. 기능의 목적은 '연속된 숫자를 문자 String으로 만들기'였다. 가장 심플한 방법은 해당 횟수 만큼 반복 처리를 하는 방법이다. StringBuilder sb = new StringBuilder(); for(int i=0;i 2022. 4. 5.
기본기)c#) 자동으로 구현된 속성 자동으로 구현된 속성 C# 3.0 이상부터는 자동으로 속성을 구현이 가능하다. 예전에는 get, set을 메서드를 따로 구성해주곤 했는데 C# 9 이상부터는 init 접근자를 자동으로 구현 속성으로 선언이 가능하다. struct Point { public int X { get; init; } public int Y { get; init; } } var p = new Point() { X = 42, Y = 13 }; 다양한 형태로 속성을 처리할 수 있다. public class DateClass { private int year {get;private set;} private int _month = -1; // Backing store public int Month { get => _month; set {.. 2022. 2. 11.
기본기)의사코드(Pseudo Code ) 의사코드(Pseudo Code) 의사 코드는 컴퓨터 프로그램이나 알고리즘이 수행해야 할 내용을 간략한 논리로 표현하기 위한 언어로 문법에 구애받지 않고 논리적 사고만 설명하기 위해서 실제 동작 여부에는 관점을 두지 않는다. 의사코드는 상당히 주관적이고 정답이 없고 표준화되어 있지 않은 날것이라는 것을 명심하고 접근해야 한다. 그렇기 때문에 암묵적인 규칙이나 표준적인 프로그래밍 구조를 기반으로 작성하면 된다. 의사코드를 표현하는 과정에서는 생략에 대한 내용도 충분히 많이 기술될 수 있다. 간략한 Unit 을 찾는 형태의 class를 의사 코드로 표현했다. public class FindUnit{ private Unit target { get{ -target Error } set{ } } public voi.. 2022. 1. 13.
반응형