240108-TIL

2024. 1. 8. 21:14내일배움캠프

1월 8일

오늘은 생각보다 여유로운 하루다.

 

항상 시간이 지나면 배웠던 것들을 하나씩 까먹는데 까먹기전에 다시한번 복습을 하면서

 

도대체 이게 뭔가? 하는 것들을 추가적으로 더 정리해보자

 

Static

더보기

C# 프로젝트를 생성하고나서 가장 먼저 보이는 Main함수에 Static이라는 부분이 있다.

 바로 요녀석이지!

 

늘상 두루뭉실하게 음 Static은 Static이야! 라고 넘어갔지만

 

이번 개인과제할때나 개인과제의 해설부분에서도 그렇고 Static이란 녀석이 많이 출몰해서

 

이거이거 더이상 그냥 넘어갈수는 없다고 생각해서 오늘 한번 제대로 파해쳐볼 심산이다.

 

 Static?

 Static의 사전적 의미다 고정된, 정지상태의

 

나는 지난 C# 학습시간에 간단하게 메모리에 관련해서 정리를 했었는데

 

스태틱을 이해하기 위해서 다시한번 메모리를 들고와봤다.

 

Static으로 선언된 객체는 프로그램이 해당 객체를 처음 호출하는 순간 메모리 공간을 할당받아

 

프로그램이 끝날 떄까지 그 상태를 유지하게 된다.

 

아하! 사전의 의미가 이해가 된다 

 

Static 변수?

정적 변수를 선언하기 위해선 변수 앞에 static키워드를 붙여 변수를 정의하면 된다.

 

이건 클래스 객체가 아닌 클래스 자체에 포함되는 변수다.

 

일반적인 변수는 클래스 객체를 만들고 난후 사용이 가능하지만?

 

static변수는 바로 사용이 가능하다는 차이점이 있다.

 

 

 

그림으로 보면 다음과 같다 Static 변수를 포함한 클래스 TestStatic의 객체를 생성하여 1,2라고 했을때

 

Static 변수가 포함이되지 않고 일반 멤버 변수만 포함된다. TestStatic의 Score은 프로그램이 실행하고 나서

 

별도의 메모리 공간에 할당되어 프로그램이 종료될때 해제된다.

 

Static함수?

 

함수(메서드)도 마찬가지이다.

 

함수를 선언할때 static 키워드를 붙여 함수를 정의하면 정적 함수를 만들 수 있다

Static함수도 [클래스명.함수이름]으로 바로 사용 가능하다.

 

 

하지만! 함수(메서드)에 Static 키워드가 붙으면 정적 함수 내에서는 정적 변수가 아닌걸 호출할 수 없다!

 

Static클래스?

 

Static 클래스는 모든 멤버가 Static 변수, Static 함수로 이루어진 것으로 객체를 생성할 수 없는 클래스다.

 

 

모든 변수 혹은 메서드가 [클래스명.변수이름] , [클래스명.메서드이름] 으로 호출된다

 

 

 

Static 클래스는 Static생성자를 가질 수 있는데 이 생성자는

 

public,protected,private 등의 한정자를 사용할 수 없으며, 매개변수 역시 가질 수 없다.

 

 

 

 

그리고 지난주에 만들었던 Text게임을 여러 방법으로 다듬고

 

다듬는 과정에서 새롭게 배운 내용을 정리할 예정이다.

 

TextGame

더보기

알아두면 좋은 콘솔기능 2가지

 

글자색 변경 및 리셋

Console.ForegroundColor / ResetColor

글자 정렬(글자 기준으로 오른쪽/왼쪽에 빈칸을 넣는느낌!)

string.PadRight(totalWidth) / PadLeft

 

 

그래서 무엇을 했느냐?

 

조금더 깔끔하게 조금더 이쁘게 만들어보았다.

 

Console.ForegroundColor를 이용해 글자의 색을 바꿔주는 메서드를 하나 만들었다.

Magenta라는 색으로 글자색을 변경시킨다음에?

 

글자를 적어주고

 

글자를 적어주고 나면? 글자 색을 다시 초기색으로 돌려주는 메서드다

 이런식으로 활용을하면?

 

 

이 곳은 인벤토리요! 라는게 눈에 띄지 않는가?

 

그리고 아이템 목록의 글자를 정렬해 주었는데

 

어떻게 했는가?

 str.PadRight/Left기능! 글자기준 오른쪽 이나 왼쪽에 공백을 찍는 기능이다.

 

문제점이 좀 있는데 바로 한글을 사용한다는 점!

GetPrintableLength 한글을을 사용할때와 아닐때의 문자길이를 구해주고

 

총 내가 맞추고싶은 문자의 길이에서 - 진짜 입력되어있는 문자열의 길이를 뺴주어서

 

얼만큼의 공백을 만들어줘야할지 적어주면?

 

이렇게 예쁘게 글자를 정렬할 수 있다.

 

이렇게 새로운 C# 기능 두가지를 배웠다.

C#복습을 하며 궁금했던 내용을 다시 정리해보았고

 

새롭게 익힌 기능을 정리해보았다.

 

240108 TIL은 여기서 마치도록 하겠다.

'내일배움캠프' 카테고리의 다른 글

240110-TIL  (0) 2024.01.10
240109 - TIL  (0) 2024.01.09
240105-TIL  (0) 2024.01.05
240104-TIL  (0) 2024.01.04
240103-TIL  (0) 2024.01.03