TIL/C#

· TIL/C#
접근제한자가 존재한다는 사실은 대부분 알고있지만 프로젝트와 같은 작업을 하지 않는 이상 쓸 기회가 없다. 마치 코딩 알고리즘 문제를 풀 때 굳이 접근제한자를 사용하지 않는 것과 같은 이유다. 그렇기 때문에 접근제한자의 종류와 차이점에 대해 설명하고자 한다. 1. public public으로 선언된 것은 어떠한 곳에서든 제약을 받지 않고 사용할 수 있다. 접근이 쉬운만큼 남용하게 되면 독립적으로 될 수 없기 때문에 안좋은 코드가 될 수 있다. 2. private private로 선언된 것은 해당 클래스 내에서만 접근이 가능하다. 반대로 말하자면 클래스 내를 제외한 모든 곳에서 접근이 불가능하다. 다른 클래스에 의해 사용되는 것을 방지하기 위해 주로 사용한다. 3. protected protected로 선언..
· TIL/C#
c#에서 ref와 out을 정말 비슷한 기능을 가지고 있다. 실제로 둘의 기능을 사용하다 보면 개념을 확실하게 인지하지 않는 이상 무슨 차이인지 모르고 그냥 사용한다. 그렇기 때문에 오늘 이 둘의 차이를 확실하게 설명하고자 한다. 1. ref ref는 참조 값을 메서드 인수로 전달한다. 다르게 말하자면 호출자에게 참조 값을 보내준다는 것이다. 이 함수를 실행해보면 결과 값은 5가 나오게 된다. 하지만 ref의 개념을 이 함수에 적용해보면 참조 값 (number = 3) 이 함수에서 호출한 val 에 전달 한 것이다. 요약하자면 number = 3의 참조 값이 메서드의 ref int val에 들어가고 메서드의 ref int val 이 메서드 안에 있는 val = 5를 가져오게 된다. (인자를 함수로 넘겨줌..
· TIL/C#
코딩에서 가장 중요하다고 말하는 것들 중 하나가 바로 디버깅이다. 하지만 디버깅이라고 해봤자 그냥 브레이크 포인트를 걸고 실행하거나 아에 디버그 자체를 안하는 경우도 다반사다. 디버깅의 실력은 곧 개발자의 실력을 나타내기 때문에 디버그 팁을 설명하고자 한다. 1. 사용법 우선 F5를 누르면 디버그 모드로 진입한다. 특정 상황에서 코드의 진행 순서를 확인하고 싶다면 브레이크 포인트를 설정하면된다. 좌측을 보면 브레이크 포인트, 빨간점이 설정돼있는 것을 볼 수 있다. 마우스로 클릭하거나, F9키로 설정할 수 있다. 이렇게 브레이크 포인트를 설정하면 저 부분 까지 코드가 모두 실행되고 그 다음부터 순서대로 진행할 수 있다. 진행하는 단축키는 F10, F11이 있다. F10은 다음 라인 이동, F11은 함수 내..
· TIL/C#
Enumerable.Reapeat 반복되는 단일 값이 들어 있는 시퀀스를 생성한다. 즉, 내가 원하는 Element값을 원하는 수만큼 반복하여 생성해준다는 것이다. 사용법 우선 C#에서 문자열을 다룰 때 좋을 것 같아서 string을 사용하여 예를 들었다. "a"란 값을 총 5번 반복하여 Concat기능을 사용하여 str값에 하나씩 붙인다. 답은 "aaaaa"가 나온다. 주의사항 위의 사용법에서 의문이 나올 수 있다. 그냥 Concat기능을 사용하지 않고 바로 "str += Enumerable.Repeat().." 으로 사용하면 안되는지 말이다. 하지만 이 기능의 개념을 다시보면 a를 단순히 5번반복하는 것이 아니라 "시퀀스"를 만드는 것이기 때문에 따로 기능을 사용해줘야만 붙여진다. 더군다나 Enume..
· TIL/C#
String.Replace 현재 문자열에서 본인이 정의한 유니코드 문자 또는 String을 탐지하여 발견된 모든 것들을 다른 String이나 유니코드 문자로 바꾸는 기능이다. 사용법 Replace는 string에 포함된 기능이기 때문에 본인이 선언한 문자열에서 Replace기능을 불러온다. 위에 코드를 실행하면 "bbcde"가 나오게 된다. 추가로 Replace 뒤에 "." 을 붙여서 Replace를 계속해서 사용할 수 있다. ex) str.Replace("a", "b").Replace("c", "d").Replace().... 주의사항 1. 사용법 코드 내용과 똑같은 것 처럼 보이지만 Replace한 값을 받고있지 않다. 즉, str자체의 값을 바꾸는 것이 아니어서 str값을 변경하여 다른 빈 공간에 ..
· TIL/C#
Transaction 이란? 여러 데이터베이스 작업을 원자성 방식으로 처리할 수 있는 방법 트랜잭션이 커밋되면 모든 작업이 데이터베이스에 적용되고 트랜잭션이 롤백되면 데이터베이스에 어떤 작업도 적용되지 않는다. 개념에서 보이듯 원자성의 특징이 보이는데 원자성이란 트랜잭션의 어떠한 작업이 완전하게 진행되어 종료되거나 완전히 반영되지 않아야 한다는 개념이다. 사용하는 이유? 보통 데이터베이스와 관련하여 사용되는데 SQL로 데이터를 관리할 때 연결해서 사용한다고 한다. 데이터를 트랜잭션으로 처리할 때 세이브포인트가 자동 활성화되고 오류나 커밋에 문제가 생길 시 세이브포인트로 복구할 수 있다. 회고 사실 이 글을 쓴 이유는 프로그래머스 문제를 풀다가 생겨난 문제 때문이다. 상황을 설명하자면 문제에 대한 풀이 코..
· TIL/C#
List를 쓰는 이유 List는 배열과 유사한 기능을 가지고 있다. 그렇다면 왜 리스트와 배열이 나눠져있을까? 여기서 가장 중요한 차이점은 배열은 동적 크기 할당이 불가능하고 리스트는 동적 크기 할당이 가능하다. 더군다나 리스트는 배열과 비교해서 입출력이 더욱 자유롭다. List와 Array의 성능 차이 앞서 말한 내용만 봐서는 무조건 리스트를 쓰는게 이득이라고 생각하지만 성능으로 비교를 했을 때 배열이 더 나은점도 있다. 배열은 리스트에 비해 메모리가 효율적이고 속도가 굉장히 빠르다. 하지만 고정된 크기의 공간을 할당으로 인하여 메모리 낭비가 심하다. 리스트는 배열에 비해 메모리가 비효율적이고 속도가 느리지만 동적할당이 가능하고 입출력이 자유롭다. 참고로 메모리와 메모리 관리는 다른 관점이다. 결론 L..
· TIL/C#
Dictionary란? 키와 값으로 이루어진 컬렉션이다. 선언 추가 Key값으로 Value 불러오기 사용하는 이유 컬렉션을 만드는 과정이면 그냥 List를 쓰면 해결될 것이라고 생각할 수 있다. 하지만 List의 큰 단점은 무조건 인덱스 "번호"로만 값을 얻을 수 있다는 것이다. 그럴 때 Dictionary를 사용한다면 본인이 원하는 형태의 타입을 키 값으로 지정하여 필요로 하는 값을 불러올 수 있다.
Sh_Blog
'TIL/C#' 카테고리의 글 목록 (3 Page)