C# 형식 키워드 | .NET 형식 | 크기 | 범위 |
---|---|---|---|
bool | System.Boolean | 1 | true 또는 false |
byte | System.Byte | 1 | 0~255 |
int | System.Int32 | 4 | -2,147,483,648 ~ 2,147,483,647 |
long | System.Int64 | 8 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
float | System.Single | 4 | ±1.5 × 10^-45 ~ ±3.4 × 10^38 |
double | System.Double | 8 | ±5.0 × 10^-324 ~ ±1.7 × 10^308 |
char | System.Char | 2 | 유니코드 문자 |
string | System.String | 유니코드 문자열 |
변수를 세분화해서 사용하는 이유?
- 메모리의 효율적인 사용
해당 자료형이 필요한 크기만큼의 메모리를 할당하여 메모리 절약- 정확한 데이터 표현
데이터의 특성에 따라 정확한 표현이 가능! ex) float와 double- 타입 안정성
코드의 타입 안정성을 유지할 수 있다. ex) byte를 사용했는데 값의 범위가 벗어날 경우, 에러 발생!
- 프로그램에서 상요되는 상수 값. 소스 코드에 직접 기록되어 있는 값
- C#에서 리터럴은 컴파일러에 의해 상수 값으로 처리, 변수나 상수에 할당되거나 연산에 사용됨.
👉 소스코드에 하드 코딩된 값!
int num = 10; float f = 3.14f; char c = 'A'; string str = "Hello, World!"; int num1 = 0x10; int num2 = 0b1010; long num3 = 100000000000000L;
C#에서 변수를 선언하는 방법 :
자료형 변수이름;
ex) int형 변수 선언하기
int num; int num1, num2, num3;
변수를 선언한 후, 변수를 초기화하여 값을 저장!
변수이름 = 값;
ex) 변수를 선언하고 초기화하기
int num; num = 10; int num1 = 100;
변수를 선언할 때, 이름을 규칙에 따라 만드는 것이 좋다!
abstract as base bool break byte case catch char checked class const continue decimal default delegate do double else enum event explicit extern false finally fixed float for foreach goto if implicit in int interface internal is lock long namespace new null object operator out override params private protected public readonly ref return sbyte sealed short sizeof stackalloc static string struct switch this throw true try typeof uint ulong unchecked unsafe ushort using virtual void volatile while
식별자를 사용할 때는 다음과 같은 규칙을 따라야 함!!!
// 좋은 예시 int playerScore; string playerName; float itemPrice; // 나쁜 예시 (중요 의미 있는 변수명 짓기) int x1; // 변수명이 의미를 알기 어려움 string a; // 변수명이 명확하지 않음 // 오류 예시 int 1stNumber; // 변수명은 숫자로 시작할 수 없음 string my-name; // 변수명에 하이픈(-)을 사용할 수 없음 float total$; // 변수명에 특수문자($)를 사용할 수 없음
클래스, 메소드, 프로퍼티 이름 등에 사용. 단어의 첫 글자는 대문자로 시작하며, 이후 단어의 첫 글자도 대문자로 표기한다.
ex) ClassName, MethodName
변수, 매개변수, 로컬 변수 이름 등에 사용. 단어의 첫 글자는 소문자로 시작하며, 이후 단어의 첫 글자는 대문자로 표기.
ex) variableName, parameterName
예외적으로 전체 글자가 모두 대문자인 경우.
ex) IP, HTTP, FTP
class MyClass { // 필드는 camelCase 표기법을 사용합니다. private int myField; // 프로퍼티는 PascalCase 표기법을 사용합니다. public int MyProperty { get; set; } // 메서드는 PascalCase 표기법을 사용합니다. public void MyMethod() { if (true) { // 중괄호는 새로운 줄에서 시작합니다. } // 코드 블록은 탭(tab) 또는 스페이스(space) 4칸으로 들여씁니다. // 관련 없는 코드 사이에는 빈 줄을 사용하여 구분합니다. // 블록 사이에는 두 줄을 띄어씁니다. /* 여러 줄 주석을 사용할 때는 / * 를 새로운 줄에서 시작하고, * / 를 새로운 줄에서 끝내도록 합니다. */ // 한 줄 주석은 이렇게 사용합니다. int a = 10; // 코드 끝에도 한 줄 주석을 사용할 수 있습니다. } }
MS의 C# 코딩 컨벤션
https://learn.microsoft.com/ko-kr/dotnet/csharp/fundamentals/coding-style/coding-conventions
자료형이 다른 변수 간에 값을 할당, 연산 수행할 때,
작은 데이터 타입에서 더 큰 데이터 타입으로 대입하는 경우
byte, short, char 등 작은 데이터 타이벵서 int, long, float 등 더 큰 데이터 타입으로 대입할 때.
byte num1 = 10; int num2 = num1;
리터럴 값이 대입되는 경우
C# 컴파일러는 리터럴 값의 데이터 타입을 판별하여 변수에 암시적으로 형변환함.
float result = 1; // 1은 int형 리터럴 값이지만 float형으로 암시적 형변환.
정수형과 부동소수점형 간의 연산을 수행하는 경우
int num1 = 10; float num2 = 3.14f; float result = num1 + num2; // int형 + float형의 덧셈에서 float로 암시적 형변환
명시적 형변환은 다음과 같이 (자료형) 형식으로 수행할 수 있다.
int num1 = 10; long num2 = (long)num1;