Programming Language/C#

C# - 구조체2

hustle_D 2025. 6. 21. 15:07
반응형

내장 구조체

닷넷 프레임 워크에서 자주 사용하는 대표적인 내장 구조체에 대해서 한번 확인해보자.

 

1. DateTime 구조체

System.DateTime 구조체는 날짜와 시간 정보를 표현하고 조작하는데 사용하는 내장 값 타입으로 연, 월, 일, 시, 분, 초, 밀리초 등의 시간 단위 처리 및 비교, 계산, 포멧팅등 다양한 기능을 제공한다.

 

1) DateTime.Now

현재 컴퓨터의 시간(로컬 시간)을 가져온다.

 

2) new DateTime()

new 키워드를 통해서 DateTime 구조체를 만들면 원하는 시간을 지정해서 만들 수 있게 된다.

기본적으로 아무런 지정 없이 인스턴스를 생성하면 아래와 같은 결과를 출력한다

 

그리고 소괄호 내부에 숫자를 순서대로 (연도, 월, 일, 시간, 분, 초) 순서로 넣어주면 해당 날짜를 가진 DateTime 구조체를 생성한다.

 

3) 각 요소 가져오기

위에서 만들었던 구조체를 사용해서 연도, 월, 일 , 시간, 분, 초, 밀리초 등의 데이터를 따로 따로 불러오도록 할 수 있다.

 

4) DateTime.TryParse()

이전에도 봤었지만 TryParse 메서드는 특정 타입으로 변환하도록 도와주는 메서드로 exception을 발생시키지 않고 변환 성공 여부를 bool타입으로 반환하기에 입력값이 유효한지 확신할 수 없을때 유용하게 사용된다.

DateTime에 이를 사용하면 첫번째 인자로 전달하는 문자열이 날짜 타입인지를 확인하고 이 값을 변환해서 두번째 인자인 out var 변수 에 담아준다.

 

이걸 보통은 조건절에 사용하는 예시들이 많다.

 

변환이 성공되면 변수에 입력한 값을 DateTime 타입으로 담아준다.

변환이 실패하면 그냥 new DateTime() 한것과 동일한 초기 값을 담아준다.

 

추가적인 메서드(ToString, ToLongDateString 등등)는 필요할때 찾아보면서 사용하자

 

2. TimeSpan 구조체

System.TimeSpan 구조체는 두개의 시간간의 차이를 나타내는 구조체로 초 단위, 분 단위 등의 여러 단위로 표현이 가능하고 보통 DateTime 구조체값 끼리의 차이 계산, 지연 타이머, 유효 시간 계산등에 사용된다.

 

1) 특정 일자부터 현재까지의 날짜 구하기

 

그럼 반대로 얼마나 지났는지는 순서만 바꾸면 된다.

 

2) 특정 시간을 더하기

 

여기서 new TimeSpan을 할때에는 시, 분, 초 요소를 모두 넣어줘야만 생성이 가능하다.

생성자가 시, 분, 초 로 시작해서 일, 밀리세컨드를 오버라이딩 했기에 기본적으로 시, 분, 초는 있어야 인스턴스화가 가능하다.

 

3) 문자관련 구조체 Char

System.Char 구조체는 C#에서 단일 문자를 표현할 때 사용하는 내장 구조체로 문자열과 밀접한 관련이 있고 문자의 타입, 분류, 변환등을 위한 다양한 유틸리티 메서드를 제공해주고 있다.

 

Char 구조체는 UTF-16 인코딩 방식의 유니코드 문자를 16비트로 표현해준다.

 

문자 판별

 

여기서 별로 유의미 하지 않은 함수는 IsDigit같아보임

대부분의 글자 또한 숫자로 구성되어 있기에 이게 True가 나온다는건 0 ~ 9까지의 숫자가 아니라 대부분의 문자를 말한다.

그냥 안쓴다고 보는게 맞을듯 싶다.

 

문자 전환

 

4. Guid 구조체

System.Guid 구조체는 128비트의 고유한 식별자를 표현해준다.

GUID는 Globally Unique Identifier의 약자로 충돌 가능성이 거의 없는 랜덤한 ID를 만들기 위해서 사용한다.

 

1) 생성방법

 

특정 GUID를 가진 GUID 타입을 직접 생성하는 방법은 new 연산자를 사용해서 전달하면 된다.

만약 전달하는 문자열이 GUID의 형태를 가지지 않을 경우엔 Exception을 벹는다

 

이를 수행해주는 정적 함수로는 Parse함수 혹은 TryParse 함수가 있다.

 

 

각 구조체에 사용되는 함수는 다양하게 존재하기에 사용할 시점이 되었을때 사용하도록 하자.

 

반응형