본문 바로가기

C#/Knowledge

변수와 자료형

새로 만든 프로젝트에 모든 내용을 지운다.

그다음에 "Hi"; 와 2024; 를 입력해 보았다.

우리가 입력한 숫자문자데이터 라고 표현하겠다.

 

F5를 눌러 실행시킨 결과 빨간줄이 생겼다.

 

에러가 발생한 것을 확인할 수 있다.

빨간줄이 나온 이유는 형식에 맞지않아서 발생한 문제라고 볼 수 있다.

우리는 앞으로 이 것을 자주 보게 될 것이다.

작성한 “Hi” 라는 문자는 코딩영역에서 혼자 살아남을 수 없는 친구이다.

코딩영역에 데이터를 추가를 하면 지금처럼 에러가 발생한다.

하지만 이전 코딩을 보면 Console.Write(); 안에서는 에러가 발생하지 않았다.

이 부분이 바로 데이터가 안전하게 있을 수 있는 공간이다.

하지만 Console.Write(); 의 본래 목적은 프로그램에 표시를 해주는 기능이다.

그러므로 데이터가 필요할때마다 사용할 수는 없다.

이럴때 필요한게 변수이다.

 

 

 

 

데이터 형식                                                                                  변수이름

문자 -> string 으로 표시                                                              닉네임이라 생각하면 편하다

숫자 -> int 로 표시

 

ⓐ 변수 활용

변수를 잘 활용한다면 다음과 같이 나타낼 수 있다.

 

 

ⓑ 변수 수정

변수는 말 그대로 변하는 수이다.

그러므로 한번 만들고 끝이 아니라 이후 다른 값을 지정할 수 있다.

하나의 변수를 사용 했지만 저장된 값에 따라 다른 값 이 나타난 것을 볼 수 있다.

 

ⓒ 자료형 - 정리표

크기가 클 수록 그 만큼 많은 메모리를 차지하기 때문에 효율적으로 사용해야한다.

 

ⓓ 자료형 - 숫자

지금까지 우리는 숫자가 필요할 때 int 를 사용해왔다.

하지만 모든 숫자가 int에 저장될 수는 없다.

정수일 경우에는 int를 사용하지만, 소수점이 필요한 실수같은 경우에는 또 다른 타입들을 사용해야 할 필요가 있다.

 

아무런 표시가 없다면 double로 인식한다.

 

ⓒ 자료형 - 문자열과 문자

string talk = "Hi";

여기서 Hi 는 엄밀히 말하면 문자가 아닌 문자열

"Hi" 분석해 보면 "H" , "i" 2가지 문자가 합쳐진 데이터이자 문자열(String)

H와 i는 문자

그리고 문자를 표현하는 자료형이 char 이다.

 

ⓓ 자료형 - bool

bool (boolean) 은 단 두가지의 값을 가진다.

보통 논리 연산의 결과로 얻게 된다.

  • true
  • false

일반적으로 익숙한 다른 자료형(숫자, 문자) 와는 다르게 생소한 형태이다.

주로 어떤 계산이 맞았는지 아닌지 확인할 때 사용한다.

 

예제에서 10 > 5 를 계산하였다.

계산이 맞으면 isLarge 의 값은 true, 틀리면 false 가 된다.

이런식으로 특정한 상황이 되었을때 어떻게 진행될지 판단근거가 되는 것이 bool 이다.

 

[ 자료형 / 리터럴 ]

자료형은 변수를 선언하고 값을 저장

리터럴은 단위라고 생각하면 편함

 

[ 자료형을 세분화 해서 사용하는 이유 ]

타입 안정성 

정확한 데이터 표현 

메모리의 효율적인 사용 

 

[ 변수 ]

데이터를 저장하고 사용하기 위한 할당받은 공간

ex) 게임을 제작할때 플레이어의 재화나 공격력, HP 같은 정보를 저장하기 위해 사용

변수

 

변수 선언 작업

 

변수 초기화 작업

 

변수 선언과 초기화를 동시에 진행

 

[ 변수명 ]

키워드(Keywords) = 이미 예약된 단어

C#에서는 키워드로 변수, 메소드, 클래스 등의 이름으로 사용할 수 없음

Keywords

 

코드 컨벤션 (Code convention) = 개발자들 사이에서 약속된 코드 작성 규칙

  • PascalCase
    클래스, 메서드, 프로퍼티 이름 등에 사용됩니다.
    단어의 첫 글자는 대문자로 시작하며, 이후 단어의 첫 글자도 대문자로 표기합니다.
    ex) ClassName, MethodName

  • camelCase
    변수, 매개변수, 로컬 변수 이름 등에 사용됩니다.
    단어의 첫 글자는 소문자로 시작하며, 이후 단어의 첫 글자는 대문자로 표기합니다.
    ex) variableName, parameterName

  • 대문자 약어
    예외적으로 전체 글자가 모두 대문자인 식별자도 있습니다.
    ex) ID, HTTP, FTP 

Code convention

.NET 설명서 C# 코딩 규칙 - C# | Microsoft Learn

 

.NET 설명서 C# 코딩 규칙 - C#

C#에서 일반적으로 사용되는 코딩 규칙에 관해 알아봅니다. 코딩 규칙은 코드를 일관되게 표시하고 코드 복사, 변경 및 유지 관리를 용이하게 합니다. 이 문서에는 문서 리포지토리 코딩 지침도

learn.microsoft.com

 

[ var 키워드 ]

  • C# 3.0부터는 var 키워드를 사용하여 변수를 선언할 수 있습니다.
  • var 키워드를 사용하여 변수를 선언하면 변수의 자료형이 컴파일러에 의해 자동으로 결정됩니다.
  • 즉, 초기화하는 값의 자료형에 따라 변수의 자료형이 결정됩니다.
  • var 키워드를 사용하여 변수를 선언할 때에는 초기화하는 값의 자료형에 따라 변수의 자료형이 결정되므로, 변수를 선언하는 시점에서 변수의 자료형을 정확히 알 수 없는 경우에 유용하게 사용할 수 있습니다.

 

[ 형변환 ]

C#에서는 자료형이 다른 변수 간에 값을 할당하거나 연산을 수행할 수 있음

이때, 자료형이 다른 변수 간에 값을 할당하거나 연산을 수행하려면

명시적 형변환(explicit casting) 또는 암시적 형변환(implicit casting)을 해주어야 한다.

더보기

명시적 형변환

다음과 같이 (자료형) 형식으로 수행할 수 있습니다.

 

암시적 형변환

1. 작은 데이터 타입에서 더 큰 데이터 타입으로 대입하는 경우

  • byte, short, char 등 작은 데이터 타입 => int, long, float 등 더 큰 데이터 타입으로 대입
    암시적 형변환이 발생합니다.

2. 리터럴 값이 대입되는 경우

  • C# 컴파일러는 리터럴 값의 데이터 타입을 판별하여 변수에 암시적으로 형변환합니다.

3. 정수형과 부동소수점형 간의 연산을 수행하는 경우

  • 정수형과 부동소수점형의 연산 결과는 부동소수점형으로 변환됩니다.
  • 암시적 형변환은 프로그래머가 직접 형변환 코드를 작성하지 않아도 되므로 코드를 간결하게 작성할 수 있습니다.
  • 하지만, 암시적 형변환이 발생하는 경우 데이터 타입을 신중하게 고려하여 코드를 작성해야 합니다.

 

캐스팅 = 형변환

여러가지의 자료형이 있는 만큼 다양한 상황에서의 형변환이 있지만

크게 3가지로 생각할 수 있다.

  • 숫자를 다른 형태의 숫자로 변환
  • 다른 자료형문자로 변환
  • 문자다른 자료형으로 변환

 

ⓐ 숫자 ㅡ> 숫자

숫자를 다를 숫자의 형태로 바꾸는 방법이다.

실제로 숫자의 자료형은 더 많지만 가장 기본적인 int 랑 float 만 확인하겠다.

 

 

ⓑ 다른자료형 ㅡ> 문자

숫자나 bool 을 문자로 바꾸는 방법이다.

간단하게 뒤에 .ToString()을 붙이면 변환할 수 있다.

 

ⓒ 문자 ㅡ> 다른자료형

대표적으로 3가지 방법이 있다.

  • Convert 클래스 
  • Parse() 함수 
  • TryParse() 함수 

    ⓒ-① Convert 사용

 

    ⓒ-② Parse() 함수 사용

 

    ⓒ-③ TryParse() 함수 사용

위와 같은 의도하지 않은 상황에 대처하기 위해 TryParse 가 있다.

out 개념이 들어가는데 어려운 개념이므로 

어떻게하면 사용할수 있는지 모양만 확인하자.

 

기존 방법과 다른 점은 반환값으로 캐스팅한 값을 받지 않는다.

반환값은 bool 만 받으며 캐스팅이 성공했는지 알 수 있다.

'C# > Knowledge' 카테고리의 다른 글

조건문  (0) 2024.04.23
연산자와 문자열 처리  (0) 2024.04.22
프로그래밍 기본 요소  (0) 2024.04.22
C# 소개 및 개발환경 설정  (0) 2024.04.22
접근 제한자  (0) 2024.03.25